hyperion-project / hyperion.ng

The successor to Hyperion aka Hyperion Next Generation
https://hyperion-project.org/
MIT License
2.95k stars 370 forks source link

Home Assistant Integration is unable to control certain components #1629

Closed danielbrunt57 closed 10 months ago

danielbrunt57 commented 11 months ago

Bug report

Home Assistant Hyperion integration is unable to control several components with the effect being the HA switch shows changed but Hyperion has not or, HA does not receive acknowledgement of the request actually changing and the HA switch then resets to off.

Steps to reproduce

Upgrade Hyperion to latest 2.0.15 and HA Integration to latest version.

What is expected?

For the damn integration to be able to control all components of Hyperion!

What is actually happening?

System

Hyperion Server:
- Build:              ()
- Build time:        Feb 19 2023 16:07:19
- Git Remote:        
- Version:           2.0.15
- UI Lang:           en (BrowserLang: en-US)
- UI Access:         default
- Avail Screen Cap.: framebuffer,x11,xcb,qt
- Avail Video  Cap.: v4l2
- Avail Audio  Cap.: audio
- Avail Services:    boblight,cec,effectengine,forwarder,flatbuffer,protobuffer,mDNS,SSDP,borderdetection
- Config path:       /home/hyperion/.hyperion
- Database:          read/write

Hyperion Server OS:
- Distribution:      Debian GNU/Linux 10 (buster)
- Architecture:      x86_64
- CPU Model:         Intel(R) Core(TM) i3-3227U CPU @ 1.90GHz
- CPU Type:          58
- Kernel:            linux (4.19.0-24-amd64 (WS: 64))
- Root/Admin:        false
- Qt Version:        5.11.3
- Python Version:    3.7.3
- Browser:           Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/115.0.0.0 Safari/537.36 Edg/115.0.1901.188
danielbrunt57 commented 11 months ago

This is after fresh restart of Home Assistant and trying to toggle the LED Device 'On':

image image image image

2023-08-04 20:12:53.390 INFO (MainThread) [homeassistant.setup] Setting up hyperion
2023-08-04 20:12:53.390 INFO (MainThread) [homeassistant.setup] Setup of domain hyperion took 0.0 seconds
2023-08-04 20:12:53.405 DEBUG (MainThread) [hyperion.client] HyperionClient initiated with: (192.168.1.102:19444)
2023-08-04 20:12:53.571 INFO (MainThread) [hyperion.client] Connected to Hyperion server: 192.168.1.102:19444
2023-08-04 20:12:53.571 DEBUG (MainThread) [hyperion.client] Send to server (192.168.1.102:19444): b'{"command": "sysinfo", "tan": 1}\n'
2023-08-04 20:12:53.587 DEBUG (MainThread) [hyperion.client] Read from server (192.168.1.102:19444): b'{"command":"sysinfo","info":{"hyperion":{"build":" ()","gitremote":"","id":"3819abd9-152e-5d98-897b-bcd986f38d9e","readOnlyMode":false,"rootPath":"/home/hyperion/.hyperion","time":"Feb 19 2023 16:07:19","version":"2.0.15"},"system":{"architecture":"x86_64","cpuHardware":"","cpuModelName":"Intel(R) Core(TM) i3-3227U CPU @ 1.90GHz","cpuModelType":"58","cpuRevision":"","domainName":"brunt.local","hostName":"hyperion","isUserAdmin":false,"kernelType":"linux","kernelVersion":"4.19.0-24-amd64","prettyName":"Debian GNU/Linux 10 (buster)","productType":"debian","productVersion":"10","pyVersion":"3.7.3","qtVersion":"5.11.3","wordSize":"64"}},"success":true,"tan":1}\n'
2023-08-04 20:12:53.601 DEBUG (MainThread) [hyperion.client] Send to server (192.168.1.102:19444): b'{"command": "authorize", "subcommand": "tokenRequired", "tan": 2}\n'
2023-08-04 20:12:53.612 DEBUG (MainThread) [hyperion.client] Read from server (192.168.1.102:19444): b'{"command":"authorize-tokenRequired","info":{"required":false},"instance":0,"success":true,"tan":2}\n'
2023-08-04 20:12:53.634 DEBUG (MainThread) [hyperion.client] Send to server (192.168.1.102:19444): b'{"command": "serverinfo", "subscribe": ["adjustment-update", "components-update", "effects-update", "leds-update", "imageToLedMapping-update", "instance-update", "priorities-update", "sessions-update", "videomode-update"], "tan": 3}\n'
2023-08-04 20:12:53.761 DEBUG (MainThread) [hyperion.client] Read from server (192.168.1.102:19444): b'{"command":"serverinfo","info":{"activeEffects":[],"activeLedColor":[{"HSL Value":[65535,0,1],"RGB Value":[255,255,255]}],"adjustment":[{"backlightColored":false,"backlightThreshold":0,"blue":[0,0,255],"brightness":100,"brightnessCompensation":100,"brightnessGain":1,"cyan":[0,255,255],"gammaBlue":1.5,"gammaGreen":1.5,"gammaRed":1.5,"green":[0,255,0],"id":"default","magenta":[255,0,255],"red":[255,0,0],"saturationGain":1,"white":[255,255,255],"yellow":[255,255,0]}],"cec":{"enabled":true},"components":[{"enabled":true,"name":"ALL"},{"enabled":false,"name":"SMOOTHING"},{"enabled":true,"name":"BLACKBORDER"},{"enabled":false,"name":"FORWARDER"},{"enabled":false,"name":"BOBLIGHTSERVER"},{"enabled":true,"name":"GRABBER"},{"enabled":true,"name":"V4L"},{"enabled":false,"name":"AUDIO"},{"enabled":false,"name":"LEDDEVICE"}],"effects":[{"args":{"center_x":0.5,"center_y":0.5,"custom-colors":[[0,0,0],[0,0,0],[255,255,0],[0,0,0],[0,0,0],[255,255,0],[0,0,0],[0,0,0],[255,255,0]],"custom-colors2":[],"enable-second":false,"random-center":false,"reverse":false,"rotation-time":25,"smoothing-custom-settings":null},"file":":/effects/atomic.json","name":"Atomic swirl","script":":/effects/swirl.py"},{"args":{"blobs":5,"color":[0,0,255],"hueChange":60,"reverse":false,"rotationTime":60,"smoothing-custom-settings":null},"file":":/effects/mood-blobs-blue.json","name":"Blue mood blobs","script":":/effects/mood-blobs.py"},{"args":{"color-end":[255,255,255],"color-end-time":250,"color-start":[50,50,50],"color-start-time":50,"fade-in-time":3000,"fade-out-time":1000,"maintain-end-color":true,"repeat-count":0,"smoothing-custom-settings":null},"file":":/effects/breath.json","name":"Breath","script":":/effects/fade.py"},{"args":{"brightness":100,"candles":"all","color":[255,138,0],"sleepTime":0.2,"smoothing-custom-settings":true,"smoothing-time_ms":500,"smoothing-updateFrequency":20},"file":":/effects/candle.json","name":"Candle","script":":/effects/candle.py"},{"args":{"color-end":[238,173,47],"color-end-time":0,"color-start":[136,97,7],"color-start-time":0,"fade-in-time":5000,"fade-out-time":0,"maintain-end-color":true,"repeat-count":1,"smoothing-custom-settings":null},"file":":/effects/cinema-fade-in.json","name":"Cinema brighten lights","script":":/effects/fade.py"},{"args":{"color-end":[238,173,47],"color-end-time":0,"color-start":[136,97,7],"color-start-time":0,"fade-in-time":0,"fade-out-time":5000,"maintain-end-color":true,"repeat-count":1,"smoothing-custom-settings":null},"file":":/effects/cinema-fade-off.json","name":"Cinema dim lights","script":":/effects/fade.py"},{"args":{"baseChange":true,"baseColorChangeRate":2,"baseColorRangeLeft":160,"baseColorRangeRight":320,"blobs":5,"color":[0,0,255],"hueChange":30,"reverse":false,"rotationTime":60,"smoothing-custom-settings":null},"file":":/effects/mood-blobs-cold.json","name":"Cold mood blobs","script":":/effects/mood-blobs.py"},{"args":{"explodeRadius":8,"smoothing-custom-settings":null,"speed":100,"trailLength":5},"file":":/effects/collision.json","name":"Collision","script":":/effects/collision.py"},{"args":{"smoothing-custom-settings":null,"speed":1},"file":":/effects/traces.json","name":"Color traces","script":":/effects/traces.py"},{"args":{"center_x":0.5,"center_x2":0.5,"center_y":0.5,"center_y2":0.5,"custom-colors":[[255,0,0],[20,0,255]],"custom-colors2":[[255,0,0,0],[255,0,0,0],[255,0,0,0],[0,0,0,1],[0,0,0,0],[255,0,0,0],[255,0,0,0],[0,0,0,1]],"enable-second":true,"random-center":false,"random-center2":false,"reverse":false,"reverse2":true,"rotation-time":25,"smoothing-custom-settings":null},"file":":/effects/double-swirl.json","name":"Double swirl","script":":/effects/swirl.py"},{"args":{"cropBottom":0,"cropLeft":0,"cropRight":0,"cropTop":0,"file":":fire.gif","fps":25,"grayscale":false,"imageSource":"file","reverse":false,"smoothing-custom-settings":null},"file":":/effects/fire.json","name":"Fire","script":":/effects/gif.py"},{"args":{"countries":["de","se"],"smoothing-custom-settings":null,"switch-time":2},"file":":/effects/flag.json","name":"Flags Germany/Sweden","script":":/effects/flag.py"},{"args":{"baseChange":true,"baseColorChangeRate":0.2,"baseColorRangeLeft":0,"baseColorRangeRight":360,"blobs":5,"colorRandom":true,"hueChange":30,"reverse":false,"rotationTime":60,"smoothing-custom-settings":null},"file":":/effects/mood-blobs-full.json","name":"Full color mood blobs","script":":/effects/mood-blobs.py"},{"args":{"blobs":5,"color":[0,255,0],"hueChange":60,"reverse":false,"rotationTime":60,"smoothing-custom-settings":null},"file":":/effects/mood-blobs-green.json","name":"Green mood blobs","script":":/effects/mood-blobs.py"},{"args":{"color":[255,0,0],"fadeFactor":0.7,"smoothing-custom-settings":null,"speed":1},"file":":/effects/knight-rider.json","name":"Knight rider","script":":/effects/knight-rider.py"},{"args":{"sleepTime":0.5,"smoothing-custom-settings":false,"smoothing-time_ms":500,"smoothing-updateFrequency":20,"testleds":"all"},"file":":/effects/ledtest.json","name":"Led Test","script":":/effects/ledtest.py"},{"args":{"background-color":[0,0,0],"hour-color":[0,0,255],"marker-color":[255,255,255],"marker-depth":0,"marker-enabled":false,"marker-width":5,"minute-color":[0,255,0],"second-color":[255,0,0],"show_seconds":true,"smoothing-custom-settings":null},"file":":/effects/light-clock.json","name":"Light clock","script":":/effects/light-clock.py"},{"args":{"cropBottom":0,"cropLeft":0,"cropRight":0,"cropTop":0,"file":":lights.gif","fps":25,"grayscale":false,"imageSource":"file","reverse":false,"smoothing-custom-settings":null},"file":":/effects/lights.json","name":"Lights","script":":/effects/gif.py"},{"args":{"cropBottom":0,"cropLeft":0,"cropRight":0,"cropTop":0,"fps":30,"grayscale":false,"imageSource":"url","reverse":false,"smoothing-custom-settings":null,"url":"https://i.gifer.com/embedded/download/1j6F.gif"},"file":":/effects/matrix.json","name":"Matrix","script":":/effects/gif.py"},{"args":{"color-end":[0,0,255],"color-end-time":150,"color-start":[0,0,50],"color-start-time":40,"fade-in-time":200,"fade-out-time":100,"maintain-end-color":false,"repeat-count":3,"smoothing-custom-settings":null},"file":":/effects/notify-blue.json","name":"Notify blue","script":":/effects/fade.py"},{"args":{"margin-pos":2,"rotationTime":4,"smoothing-custom-settings":null},"file":":/effects/pacman.json","name":"Pac-Man","script":":/effects/pacman.py"},{"args":{"sleepTime":0.2,"smoothing-custom-settings":null},"file":":/effects/plasma.json","name":"Plasma","script":":/effects/plasma.py"},{"args":{"color_one":[255,0,0],"color_two":[0,0,255],"colors_count":10,"reverse":false,"rotation-time":1.5,"smoothing-custom-settings":null},"file":":/effects/police-lights-single.json","name":"Police Lights Single","script":":/effects/police.py"},{"args":{"color_one":[255,0,0],"color_two":[0,0,255],"reverse":false,"rotation-time":1,"smoothing-custom-settings":null},"file":":/effects/police-lights-solid.json","name":"Police Lights Solid","script":":/effects/police.py"},{"args":{"brightness":100,"reverse":false,"rotation-time":60,"smoothing-custom-settings":null},"file":":/effects/rainbow-mood.json","name":"Rainbow mood","script":":/effects/rainbow-mood.py"},{"args":{"center_x":0.5,"center_y":0.5,"custom-colors":[],"custom-colors2":[],"enable-second":false,"random-center":false,"reverse":false,"rotation-time":20,"smoothing-custom-settings":true,"smoothing-time_ms":200,"smoothing-updateFrequency":25},"file":":/effects/rainbow-swirl.json","name":"Rainbow swirl","script":":/effects/swirl.py"},{"args":{"center_x":0.5,"center_y":0.5,"custom-colors":[],"custom-colors2":[],"enable-second":false,"random-center":false,"reverse":false,"rotation-time":7,"smoothing-custom-settings":null},"file":":/effects/rainbow-swirl-fast.json","name":"Rainbow swirl fast","script":":/effects/swirl.py"},{"args":{"saturation":1,"smoothing-custom-settings":true,"smoothing-time_ms":200,"smoothing-updateFrequency":20,"speed":750},"file":":/effects/random.json","name":"Random","script":":/effects/random.py"},{"args":{"blobs":5,"color":[255,0,0],"hueChange":60,"reverse":false,"rotationTime":60,"smoothing-custom-settings":null},"file":":/effects/mood-blobs-red.json","name":"Red mood blobs","script":":/effects/mood-blobs.py"},{"args":{"center_x":1.25,"center_y":-0.25,"colors":[[8,0,255],[0,161,255],[0,222,255],[0,153,255],[38,0,255],[0,199,255]],"random-center":false,"reverse":false,"reverse_time":0,"rotation_time":60,"smoothing-custom-settings":true,"smoothing-time_ms":200,"smoothing-updateFrequency":25},"file":":/effects/Seawaves.json","name":"Sea waves","script":":/effects/waves.py"},{"args":{"background-color":[0,0,0],"color":[255,0,0],"percentage":10,"rotation-time":12,"smoothing-custom-settings":null},"file":":/effects/snake.json","name":"Snake","script":":/effects/snake.py"},{"args":{"brightness":100,"color":[255,255,255],"random-color":false,"rotation-time":3,"saturation":100,"sleep-time":0.05,"smoothing-custom-settings":null},"file":":/effects/sparks.json","name":"Sparks","script":":/effects/sparks.py"},{"args":{"color-end":[0,0,0],"color-end-time":100,"color-start":[255,0,0],"color-start-time":100,"fade-in-time":100,"fade-out-time":100,"maintain-end-color":true,"repeat-count":0,"smoothing-custom-settings":null},"file":":/effects/strobe-red.json","name":"Strobe red","script":":/effects/fade.py"},{"args":{"color-end":[0,0,0],"color-end-time":10,"color-start":[255,255,255],"color-start-time":50,"fade-in-time":0,"fade-out-time":100,"maintain-end-color":true,"repeat-count":0,"smoothing-custom-settings":null},"file":":/effects/strobe-white.json","name":"Strobe white","script":":/effects/fade.py"},{"args":{"alarm-color":[255,0,0],"initial-blink":true,"post-color":[255,174,11],"set-post-color":true,"shutdown-enabled":false,"smoothing-custom-settings":null,"speed":1.2},"file":":/effects/shutdown.json","name":"System Shutdown","script":":/effects/shutdown.py"},{"args":{"color":[255,255,255],"height":8,"max_len":7,"min_len":2,"random":false,"smoothing-custom-settings":null,"speed":30,"trails":3},"file":":/effects/trails.json","name":"Trails","script":":/effects/trails.py"},{"args":{"color":[255,255,255],"height":8,"max_len":6,"min_len":2,"random":true,"smoothing-custom-settings":null,"speed":50,"trails":16},"file":":/effects/trails_color.json","name":"Trails color","script":":/effects/trails.py"},{"args":{"baseChange":true,"baseColorChangeRate":2,"baseColorRangeLeft":333,"baseColorRangeRight":151,"blobs":5,"color":[255,0,0],"hueChange":30,"reverse":false,"rotationTime":60,"smoothing-custom-settings":true,"smoothing-time_ms":200,"smoothing-updateFrequency":25},"file":":/effects/mood-blobs-warm.json","name":"Warm mood blobs","script":":/effects/mood-blobs.py"},{"args":{"reverse":false,"smoothing-custom-settings":null},"file":":/effects/waves.json","name":"Waves with Color","script":":/effects/waves.py"},{"args":{"color1":[255,255,255],"color2":[255,0,0],"length":1,"sleepTime":750,"smoothing-custom-settings":null},"file":":/effects/x-mas.json","name":"X-Mas","script":":/effects/x-mas.py"}],"grabbers":{"audio":{"active":[],"available":["audio"]},"screen":{"active":["Qt"],"available":["framebuffer","x11","xcb","qt"]},"video":{"active":["V4L2"],"available":["v4l2"]}},"hostname":"hyperion","imageToLedMappingType":"multicolor_mean","instance":[{"friendly_name":"First LED Hardware instance","instance":0,"running":true}],"ledDevices":{"available":["adalight","apa102","apa104","atmo","atmoorb","cololight","dmx","fadecandy","file","hyperionusbasp","karate","lightpack","lpd6803","lpd8806","nanoleaf","p9813","paintpack","philipshue","piblaster","rawhid","razer","sedu","sk6812spi","sk6822spi","sk9822","tinkerforge","tpm2","tpm2net","udpartnet","udpddp","udpe131","udph801","udpraw","wled","ws2801","ws2812spi","yeelight"]},"leds":[{"hmax":0.5235,"hmin":0.49,"vmax":1,"vmin":0.99},{"hmax":0.537,"hmin":0.5035,"vmax":1,"vmin":0.99},{"hmax":0.5505,"hmin":0.517,"vmax":1,"vmin":0.99},{"hmax":0.5641,"hmin":0.5305,"vmax":1,"vmin":0.99},{"hmax":0.5776,"hmin":0.5441,"vmax":1,"vmin":0.99},{"hmax":0.5911,"hmin":0.5576,"vmax":1,"vmin":0.99},{"hmax":0.6046,"hmin":0.5711,"vmax":1,"vmin":0.99},{"hmax":0.6181,"hmin":0.5846,"vmax":1,"vmin":0.99},{"hmax":0.6316,"hmin":0.5981,"vmax":1,"vmin":0.99},{"hmax":0.6451,"hmin":0.6116,"vmax":1,"vmin":0.99},{"hmax":0.6586,"hmin":0.6251,"vmax":1,"vmin":0.99},{"hmax":0.6722,"hmin":0.6386,"vmax":1,"vmin":0.99},{"hmax":0.6857,"hmin":0.6522,"vmax":1,"vmin":0.99},{"hmax":0.6992,"hmin":0.6657,"vmax":1,"vmin":0.99},{"hmax":0.7127,"hmin":0.6792,"vmax":1,"vmin":0.99},{"hmax":0.7262,"hmin":0.6927,"vmax":1,"vmin":0.99},{"hmax":0.7397,"hmin":0.7062,"vmax":1,"vmin":0.99},{"hmax":0.7532,"hmin":0.7197,"vmax":1,"vmin":0.99},{"hmax":0.7668,"hmin":0.7332,"vmax":1,"vmin":0.99},{"hmax":0.7803,"hmin":0.7468,"vmax":1,"vmin":0.99},{"hmax":0.7938,"hmin":0.7603,"vmax":1,"vmin":0.99},{"hmax":0.8073,"hmin":0.7738,"vmax":1,"vmin":0.99},{"hmax":0.8208,"hmin":0.7873,"vmax":1,"vmin":0.99},{"hmax":0.8343,"hmin":0.8008,"vmax":1,"vmin":0.99},{"hmax":0.8478,"hmin":0.8143,"vmax":1,"vmin":0.99},{"hmax":0.8614,"hmin":0.8278,"vmax":1,"vmin":0.99},{"hmax":0.8749,"hmin":0.8414,"vmax":1,"vmin":0.99},{"hmax":0.8884,"hmin":0.8549,"vmax":1,"vmin":0.99},{"hmax":0.9019,"hmin":0.8684,"vmax":1,"vmin":0.99},{"hmax":0.9154,"hmin":0.8819,"vmax":1,"vmin":0.99},{"hmax":0.9289,"hmin":0.8954,"vmax":1,"vmin":0.99},{"hmax":0.9424,"hmin":0.9089,"vmax":1,"vmin":0.99},{"hmax":0.9559,"hmin":0.9224,"vmax":1,"vmin":0.99},{"hmax":0.9695,"hmin":0.9359,"vmax":1,"vmin":0.99},{"hmax":0.983,"hmin":0.9495,"vmax":1,"vmin":0.99},{"hmax":0.9965,"hmin":0.963,"vmax":1,"vmin":0.99},{"hmax":1,"hmin":0.9765,"vmax":1,"vmin":0.99},{"hmax":1,"hmin":0.99,"vmax":1,"vmin":0.9683},{"hmax":1,"hmin":0.99,"vmax":0.9883,"vmin":0.9465},{"hmax":1,"hmin":0.99,"vmax":0.9665,"vmin":0.9248},{"hmax":1,"hmin":0.99,"vmax":0.9448,"vmin":0.903},{"hmax":1,"hmin":0.99,"vmax":0.923,"vmin":0.8813},{"hmax":1,"hmin":0.99,"vmax":0.9013,"vmin":0.8596},{"hmax":1,"hmin":0.99,"vmax":0.8796,"vmin":0.8378},{"hmax":1,"hmin":0.99,"vmax":0.8578,"vmin":0.8161},{"hmax":1,"hmin":0.99,"vmax":0.8361,"vmin":0.7943},{"hmax":1,"hmin":0.99,"vmax":0.8143,"vmin":0.7726},{"hmax":1,"hmin":0.99,"vmax":0.7926,"vmin":0.7509},{"hmax":1,"hmin":0.99,"vmax":0.7709,"vmin":0.7291},{"hmax":1,"hmin":0.99,"vmax":0.7491,"vmin":0.7074},{"hmax":1,"hmin":0.99,"vmax":0.7274,"vmin":0.6857},{"hmax":1,"hmin":0.99,"vmax":0.7057,"vmin":0.6639},{"hmax":1,"hmin":0.99,"vmax":0.6839,"vmin":0.6422},{"hmax":1,"hmin":0.99,"vmax":0.6622,"vmin":0.6204},{"hmax":1,"hmin":0.99,"vmax":0.6404,"vmin":0.5987},{"hmax":1,"hmin":0.99,"vmax":0.6187,"vmin":0.577},{"hmax":1,"hmin":0.99,"vmax":0.597,"vmin":0.5552},{"hmax":1,"hmin":0.99,"vmax":0.5752,"vmin":0.5335},{"hmax":1,"hmin":0.99,"vmax":0.5535,"vmin":0.5117},{"hmax":1,"hmin":0.99,"vmax":0.5317,"vmin":0.49},{"hmax":1,"hmin":0.99,"vmax":0.51,"vmin":0.4683},{"hmax":1,"hmin":0.99,"vmax":0.4883,"vmin":0.4465},{"hmax":1,"hmin":0.99,"vmax":0.4665,"vmin":0.4248},{"hmax":1,"hmin":0.99,"vmax":0.4448,"vmin":0.403},{"hmax":1,"hmin":0.99,"vmax":0.423,"vmin":0.3813},{"hmax":1,"hmin":0.99,"vmax":0.4013,"vmin":0.3596},{"hmax":1,"hmin":0.99,"vmax":0.3796,"vmin":0.3378},{"hmax":1,"hmin":0.99,"vmax":0.3578,"vmin":0.3161},{"hmax":1,"hmin":0.99,"vmax":0.3361,"vmin":0.2943},{"hmax":1,"hmin":0.99,"vmax":0.3143,"vmin":0.2726},{"hmax":1,"hmin":0.99,"vmax":0.2926,"vmin":0.2509},{"hmax":1,"hmin":0.99,"vmax":0.2709,"vmin":0.2291},{"hmax":1,"hmin":0.99,"vmax":0.2491,"vmin":0.2074},{"hmax":1,"hmin":0.99,"vmax":0.2274,"vmin":0.1857},{"hmax":1,"hmin":0.99,"vmax":0.2057,"vmin":0.1639},{"hmax":1,"hmin":0.99,"vmax":0.1839,"vmin":0.1422},{"hmax":1,"hmin":0.99,"vmax":0.1622,"vmin":0.1204},{"hmax":1,"hmin":0.99,"vmax":0.1404,"vmin":0.0987},{"hmax":1,"hmin":0.99,"vmax":0.1187,"vmin":0.077},{"hmax":1,"hmin":0.99,"vmax":0.097,"vmin":0.0552},{"hmax":1,"hmin":0.99,"vmax":0.0752,"vmin":0.0335},{"hmax":1,"hmin":0.99,"vmax":0.0535,"vmin":0.0117},{"hmax":1,"hmin":0.99,"vmax":0.0317,"vmin":0},{"hmax":1,"hmin":0.9765,"vmax":0.01,"vmin":0},{"hmax":0.9965,"hmin":0.963,"vmax":0.01,"vmin":0},{"hmax":0.983,"hmin":0.9495,"vmax":0.01,"vmin":0},{"hmax":0.9695,"hmin":0.9359,"vmax":0.01,"vmin":0},{"hmax":0.9559,"hmin":0.9224,"vmax":0.01,"vmin":0},{"hmax":0.9424,"hmin":0.9089,"vmax":0.01,"vmin":0},{"hmax":0.9289,"hmin":0.8954,"vmax":0.01,"vmin":0},{"hmax":0.9154,"hmin":0.8819,"vmax":0.01,"vmin":0},{"hmax":0.9019,"hmin":0.8684,"vmax":0.01,"vmin":0},{"hmax":0.8884,"hmin":0.8549,"vmax":0.01,"vmin":0},{"hmax":0.8749,"hmin":0.8414,"vmax":0.01,"vmin":0},{"hmax":0.8614,"hmin":0.8278,"vmax":0.01,"vmin":0},{"hmax":0.8478,"hmin":0.8143,"vmax":0.01,"vmin":0},{"hmax":0.8343,"hmin":0.8008,"vmax":0.01,"vmin":0},{"hmax":0.8208,"hmin":0.7873,"vmax":0.01,"vmin":0},{"hmax":0.8073,"hmin":0.7738,"vmax":0.01,"vmin":0},{"hmax":0.7938,"hmin":0.7603,"vmax":0.01,"vmin":0},{"hmax":0.7803,"hmin":0.7468,"vmax":0.01,"vmin":0},{"hmax":0.7668,"hmin":0.7332,"vmax":0.01,"vmin":0},{"hmax":0.7532,"hmin":0.7197,"vmax":0.01,"vmin":0},{"hmax":0.7397,"hmin":0.7062,"vmax":0.01,"vmin":0},{"hmax":0.7262,"hmin":0.6927,"vmax":0.01,"vmin":0},{"hmax":0.7127,"hmin":0.6792,"vmax":0.01,"vmin":0},{"hmax":0.6992,"hmin":0.6657,"vmax":0.01,"vmin":0},{"hmax":0.6857,"hmin":0.6522,"vmax":0.01,"vmin":0},{"hmax":0.6722,"hmin":0.6386,"vmax":0.01,"vmin":0},{"hmax":0.6586,"hmin":0.6251,"vmax":0.01,"vmin":0},{"hmax":0.6451,"hmin":0.6116,"vmax":0.01,"vmin":0},{"hmax":0.6316,"hmin":0.5981,"vmax":0.01,"vmin":0},{"hmax":0.6181,"hmin":0.5846,"vmax":0.01,"vmin":0},{"hmax":0.6046,"hmin":0.5711,"vmax":0.01,"vmin":0},{"hmax":0.5911,"hmin":0.5576,"vmax":0.01,"vmin":0},{"hmax":0.5776,"hmin":0.5441,"vmax":0.01,"vmin":0},{"hmax":0.5641,"hmin":0.5305,"vmax":0.01,"vmin":0},{"hmax":0.5505,"hmin":0.517,"vmax":0.01,"vmin":0},{"hmax":0.537,"hmin":0.5035,"vmax":0.01,"vmin":0},{"hmax":0.5235,"hmin":0.49,"vmax":0.01,"vmin":0},{"hmax":0.51,"hmin":0.4765,"vmax":0.01,"vmin":0},{"hmax":0.4965,"hmin":0.463,"vmax":0.01,"vmin":0},{"hmax":0.483,"hmin":0.4495,"vmax":0.01,"vmin":0},{"hmax":0.4695,"hmin":0.4359,"vmax":0.01,"vmin":0},{"hmax":0.4559,"hmin":0.4224,"vmax":0.01,"vmin":0},{"hmax":0.4424,"hmin":0.4089,"vmax":0.01,"vmin":0},{"hmax":0.4289,"hmin":0.3954,"vmax":0.01,"vmin":0},{"hmax":0.4154,"hmin":0.3819,"vmax":0.01,"vmin":0},{"hmax":0.4019,"hmin":0.3684,"vmax":0.01,"vmin":0},{"hmax":0.3884,"hmin":0.3549,"vmax":0.01,"vmin":0},{"hmax":0.3749,"hmin":0.3414,"vmax":0.01,"vmin":0},{"hmax":0.3614,"hmin":0.3278,"vmax":0.01,"vmin":0},{"hmax":0.3478,"hmin":0.3143,"vmax":0.01,"vmin":0},{"hmax":0.3343,"hmin":0.3008,"vmax":0.01,"vmin":0},{"hmax":0.3208,"hmin":0.2873,"vmax":0.01,"vmin":0},{"hmax":0.3073,"hmin":0.2738,"vmax":0.01,"vmin":0},{"hmax":0.2938,"hmin":0.2603,"vmax":0.01,"vmin":0},{"hmax":0.2803,"hmin":0.2468,"vmax":0.01,"vmin":0},{"hmax":0.2668,"hmin":0.2332,"vmax":0.01,"vmin":0},{"hmax":0.2532,"hmin":0.2197,"vmax":0.01,"vmin":0},{"hmax":0.2397,"hmin":0.2062,"vmax":0.01,"vmin":0},{"hmax":0.2262,"hmin":0.1927,"vmax":0.01,"vmin":0},{"hmax":0.2127,"hmin":0.1792,"vmax":0.01,"vmin":0},{"hmax":0.1992,"hmin":0.1657,"vmax":0.01,"vmin":0},{"hmax":0.1857,"hmin":0.1522,"vmax":0.01,"vmin":0},{"hmax":0.1722,"hmin":0.1386,"vmax":0.01,"vmin":0},{"hmax":0.1586,"hmin":0.1251,"vmax":0.01,"vmin":0},{"hmax":0.1451,"hmin":0.1116,"vmax":0.01,"vmin":0},{"hmax":0.1316,"hmin":0.0981,"vmax":0.01,"vmin":0},{"hmax":0.1181,"hmin":0.0846,"vmax":0.01,"vmin":0},{"hmax":0.1046,"hmin":0.0711,"vmax":0.01,"vmin":0},{"hmax":0.0911,"hmin":0.0576,"vmax":0.01,"vmin":0},{"hmax":0.0776,"hmin":0.0441,"vmax":0.01,"vmin":0},{"hmax":0.0641,"hmin":0.0305,"vmax":0.01,"vmin":0},{"hmax":0.0505,"hmin":0.017,"vmax":0.01,"vmin":0},{"hmax":0.037,"hmin":0.0035,"vmax":0.01,"vmin":0},{"hmax":0.0235,"hmin":0,"vmax":0.01,"vmin":0},{"hmax":0.01,"hmin":0,"vmax":0.0317,"vmin":0},{"hmax":0.01,"hmin":0,"vmax":0.0535,"vmin":0.0117},{"hmax":0.01,"hmin":0,"vmax":0.0752,"vmin":0.0335},{"hmax":0.01,"hmin":0,"vmax":0.097,"vmin":0.0552},{"hmax":0.01,"hmin":0,"vmax":0.1187,"vmin":0.077},{"hmax":0.01,"hmin":0,"vmax":0.1404,"vmin":0.0987},{"hmax":0.01,"hmin":0,"vmax":0.1622,"vmin":0.1204},{"hmax":0.01,"hmin":0,"vmax":0.1839,"vmin":0.1422},{"hmax":0.01,"hmin":0,"vmax":0.2057,"vmin":0.1639},{"hmax":0.01,"hmin":0,"vmax":0.2274,"vmin":0.1857},{"hmax":0.01,"hmin":0,"vmax":0.2491,"vmin":0.2074},{"hmax":0.01,"hmin":0,"vmax":0.2709,"vmin":0.2291},{"hmax":0.01,"hmin":0,"vmax":0.2926,"vmin":0.2509},{"hmax":0.01,"hmin":0,"vmax":0.3143,"vmin":0.2726},{"hmax":0.01,"hmin":0,"vmax":0.3361,"vmin":0.2943},{"hmax":0.01,"hmin":0,"vmax":0.3578,"vmin":0.3161},{"hmax":0.01,"hmin":0,"vmax":0.3796,"vmin":0.3378},{"hmax":0.01,"hmin":0,"vmax":0.4013,"vmin":0.3596},{"hmax":0.01,"hmin":0,"vmax":0.423,"vmin":0.3813},{"hmax":0.01,"hmin":0,"vmax":0.4448,"vmin":0.403},{"hmax":0.01,"hmin":0,"vmax":0.4665,"vmin":0.4248},{"hmax":0.01,"hmin":0,"vmax":0.4883,"vmin":0.4465},{"hmax":0.01,"hmin":0,"vmax":0.51,"vmin":0.4683},{"hmax":0.01,"hmin":0,"vmax":0.5317,"vmin":0.49},{"hmax":0.01,"hmin":0,"vmax":0.5535,"vmin":0.5117},{"hmax":0.01,"hmin":0,"vmax":0.5752,"vmin":0.5335},{"hmax":0.01,"hmin":0,"vmax":0.597,"vmin":0.5552},{"hmax":0.01,"hmin":0,"vmax":0.6187,"vmin":0.577},{"hmax":0.01,"hmin":0,"vmax":0.6404,"vmin":0.5987},{"hmax":0.01,"hmin":0,"vmax":0.6622,"vmin":0.6204},{"hmax":0.01,"hmin":0,"vmax":0.6839,"vmin":0.6422},{"hmax":0.01,"hmin":0,"vmax":0.7057,"vmin":0.6639},{"hmax":0.01,"hmin":0,"vmax":0.7274,"vmin":0.6857},{"hmax":0.01,"hmin":0,"vmax":0.7491,"vmin":0.7074},{"hmax":0.01,"hmin":0,"vmax":0.7709,"vmin":0.7291},{"hmax":0.01,"hmin":0,"vmax":0.7926,"vmin":0.7509},{"hmax":0.01,"hmin":0,"vmax":0.8143,"vmin":0.7726},{"hmax":0.01,"hmin":0,"vmax":0.8361,"vmin":0.7943},{"hmax":0.01,"hmin":0,"vmax":0.8578,"vmin":0.8161},{"hmax":0.01,"hmin":0,"vmax":0.8796,"vmin":0.8378},{"hmax":0.01,"hmin":0,"vmax":0.9013,"vmin":0.8596},{"hmax":0.01,"hmin":0,"vmax":0.923,"vmin":0.8813},{"hmax":0.01,"hmin":0,"vmax":0.9448,"vmin":0.903},{"hmax":0.01,"hmin":0,"vmax":0.9665,"vmin":0.9248},{"hmax":0.01,"hmin":0,"vmax":0.9883,"vmin":0.9465},{"hmax":0.01,"hmin":0,"vmax":1,"vmin":0.9683},{"hmax":0.0235,"hmin":0,"vmax":1,"vmin":0.99},{"hmax":0.037,"hmin":0.0035,"vmax":1,"vmin":0.99},{"hmax":0.0505,"hmin":0.017,"vmax":1,"vmin":0.99},{"hmax":0.0641,"hmin":0.0305,"vmax":1,"vmin":0.99},{"hmax":0.0776,"hmin":0.0441,"vmax":1,"vmin":0.99},{"hmax":0.0911,"hmin":0.0576,"vmax":1,"vmin":0.99},{"hmax":0.1046,"hmin":0.0711,"vmax":1,"vmin":0.99},{"hmax":0.1181,"hmin":0.0846,"vmax":1,"vmin":0.99},{"hmax":0.1316,"hmin":0.0981,"vmax":1,"vmin":0.99},{"hmax":0.1451,"hmin":0.1116,"vmax":1,"vmin":0.99},{"hmax":0.1586,"hmin":0.1251,"vmax":1,"vmin":0.99},{"hmax":0.1722,"hmin":0.1386,"vmax":1,"vmin":0.99},{"hmax":0.1857,"hmin":0.1522,"vmax":1,"vmin":0.99},{"hmax":0.1992,"hmin":0.1657,"vmax":1,"vmin":0.99},{"hmax":0.2127,"hmin":0.1792,"vmax":1,"vmin":0.99},{"hmax":0.2262,"hmin":0.1927,"vmax":1,"vmin":0.99},{"hmax":0.2397,"hmin":0.2062,"vmax":1,"vmin":0.99},{"hmax":0.2532,"hmin":0.2197,"vmax":1,"vmin":0.99},{"hmax":0.2668,"hmin":0.2332,"vmax":1,"vmin":0.99},{"hmax":0.2803,"hmin":0.2468,"vmax":1,"vmin":0.99},{"hmax":0.2938,"hmin":0.2603,"vmax":1,"vmin":0.99},{"hmax":0.3073,"hmin":0.2738,"vmax":1,"vmin":0.99},{"hmax":0.3208,"hmin":0.2873,"vmax":1,"vmin":0.99},{"hmax":0.3343,"hmin":0.3008,"vmax":1,"vmin":0.99},{"hmax":0.3478,"hmin":0.3143,"vmax":1,"vmin":0.99},{"hmax":0.3614,"hmin":0.3278,"vmax":1,"vmin":0.99},{"hmax":0.3749,"hmin":0.3414,"vmax":1,"vmin":0.99},{"hmax":0.3884,"hmin":0.3549,"vmax":1,"vmin":0.99},{"hmax":0.4019,"hmin":0.3684,"vmax":1,"vmin":0.99},{"hmax":0.4154,"hmin":0.3819,"vmax":1,"vmin":0.99},{"hmax":0.4289,"hmin":0.3954,"vmax":1,"vmin":0.99},{"hmax":0.4424,"hmin":0.4089,"vmax":1,"vmin":0.99},{"hmax":0.4559,"hmin":0.4224,"vmax":1,"vmin":0.99},{"hmax":0.4695,"hmin":0.4359,"vmax":1,"vmin":0.99},{"hmax":0.483,"hmin":0.4495,"vmax":1,"vmin":0.99},{"hmax":0.4965,"hmin":0.463,"vmax":1,"vmin":0.99},{"hmax":0.51,"hmin":0.4765,"vmax":1,"vmin":0.99}],"priorities":[{"active":true,"componentId":"COLOR","origin":"Home Assistant@::ffff:192.168.1.104","priority":128,"value":{"HSL":[65535,0,1],"RGB":[255,255,255]},"visible":true},{"active":true,"componentId":"V4L","origin":"System","owner":"V4L2","priority":240,"visible":false},{"active":false,"componentId":"GRABBER","origin":"System","priority":250,"visible":false}],"priorities_autoselect":true,"services":["boblight","cec","effectengine","forwarder","flatbuffer","protobuffer","mDNS","SSDP","borderdetection"],"transform":[{"blacklevel":[0,0,0],"brightnessGain":1,"gamma":[2.5,2.5,2.5],"id":"default","luminanceGain":1,"luminanceMinimum":0,"saturationGain":1,"saturationLGain":1,"threshold":[0,0,0],"whitelevel":[1,1,1]}],"videomode":"2D"},"instance":0,"success":true,"tan":3}\n'
2023-08-04 20:12:59.991 INFO (MainThread) [homeassistant.components.light] Setting up light.hyperion
2023-08-04 20:12:59.992 INFO (MainThread) [homeassistant.components.switch] Setting up switch.hyperion
2023-08-04 20:13:00.707 INFO (MainThread) [homeassistant.components.camera] Setting up camera.hyperion
2023-08-04 20:13:00.731 DEBUG (MainThread) [hyperion.client] HyperionClient initiated with: (192.168.1.102:19444)
2023-08-04 20:13:00.750 INFO (MainThread) [hyperion.client] Connected to Hyperion server: 192.168.1.102:19444
2023-08-04 20:13:00.750 DEBUG (MainThread) [hyperion.client] Send to server (192.168.1.102:19444): b'{"command": "serverinfo", "subscribe": ["adjustment-update", "components-update", "effects-update", "leds-update", "imageToLedMapping-update", "instance-update", "priorities-update", "sessions-update", "videomode-update"], "tan": 1}\n'
2023-08-04 20:13:00.859 DEBUG (MainThread) [hyperion.client] Read from server (192.168.1.102:19444): b'{"command":"serverinfo","info":{"activeEffects":[],"activeLedColor":[{"HSL Value":[65535,0,1],"RGB Value":[255,255,255]}],"adjustment":[{"backlightColored":false,"backlightThreshold":0,"blue":[0,0,255],"brightness":100,"brightnessCompensation":100,"brightnessGain":1,"cyan":[0,255,255],"gammaBlue":1.5,"gammaGreen":1.5,"gammaRed":1.5,"green":[0,255,0],"id":"default","magenta":[255,0,255],"red":[255,0,0],"saturationGain":1,"white":[255,255,255],"yellow":[255,255,0]}],"cec":{"enabled":true},"components":[{"enabled":true,"name":"ALL"},{"enabled":false,"name":"SMOOTHING"},{"enabled":true,"name":"BLACKBORDER"},{"enabled":false,"name":"FORWARDER"},{"enabled":false,"name":"BOBLIGHTSERVER"},{"enabled":true,"name":"GRABBER"},{"enabled":true,"name":"V4L"},{"enabled":false,"name":"AUDIO"},{"enabled":false,"name":"LEDDEVICE"}],"effects":[{"args":{"center_x":0.5,"center_y":0.5,"custom-colors":[[0,0,0],[0,0,0],[255,255,0],[0,0,0],[0,0,0],[255,255,0],[0,0,0],[0,0,0],[255,255,0]],"custom-colors2":[],"enable-second":false,"random-center":false,"reverse":false,"rotation-time":25,"smoothing-custom-settings":null},"file":":/effects/atomic.json","name":"Atomic swirl","script":":/effects/swirl.py"},{"args":{"blobs":5,"color":[0,0,255],"hueChange":60,"reverse":false,"rotationTime":60,"smoothing-custom-settings":null},"file":":/effects/mood-blobs-blue.json","name":"Blue mood blobs","script":":/effects/mood-blobs.py"},{"args":{"color-end":[255,255,255],"color-end-time":250,"color-start":[50,50,50],"color-start-time":50,"fade-in-time":3000,"fade-out-time":1000,"maintain-end-color":true,"repeat-count":0,"smoothing-custom-settings":null},"file":":/effects/breath.json","name":"Breath","script":":/effects/fade.py"},{"args":{"brightness":100,"candles":"all","color":[255,138,0],"sleepTime":0.2,"smoothing-custom-settings":true,"smoothing-time_ms":500,"smoothing-updateFrequency":20},"file":":/effects/candle.json","name":"Candle","script":":/effects/candle.py"},{"args":{"color-end":[238,173,47],"color-end-time":0,"color-start":[136,97,7],"color-start-time":0,"fade-in-time":5000,"fade-out-time":0,"maintain-end-color":true,"repeat-count":1,"smoothing-custom-settings":null},"file":":/effects/cinema-fade-in.json","name":"Cinema brighten lights","script":":/effects/fade.py"},{"args":{"color-end":[238,173,47],"color-end-time":0,"color-start":[136,97,7],"color-start-time":0,"fade-in-time":0,"fade-out-time":5000,"maintain-end-color":true,"repeat-count":1,"smoothing-custom-settings":null},"file":":/effects/cinema-fade-off.json","name":"Cinema dim lights","script":":/effects/fade.py"},{"args":{"baseChange":true,"baseColorChangeRate":2,"baseColorRangeLeft":160,"baseColorRangeRight":320,"blobs":5,"color":[0,0,255],"hueChange":30,"reverse":false,"rotationTime":60,"smoothing-custom-settings":null},"file":":/effects/mood-blobs-cold.json","name":"Cold mood blobs","script":":/effects/mood-blobs.py"},{"args":{"explodeRadius":8,"smoothing-custom-settings":null,"speed":100,"trailLength":5},"file":":/effects/collision.json","name":"Collision","script":":/effects/collision.py"},{"args":{"smoothing-custom-settings":null,"speed":1},"file":":/effects/traces.json","name":"Color traces","script":":/effects/traces.py"},{"args":{"center_x":0.5,"center_x2":0.5,"center_y":0.5,"center_y2":0.5,"custom-colors":[[255,0,0],[20,0,255]],"custom-colors2":[[255,0,0,0],[255,0,0,0],[255,0,0,0],[0,0,0,1],[0,0,0,0],[255,0,0,0],[255,0,0,0],[0,0,0,1]],"enable-second":true,"random-center":false,"random-center2":false,"reverse":false,"reverse2":true,"rotation-time":25,"smoothing-custom-settings":null},"file":":/effects/double-swirl.json","name":"Double swirl","script":":/effects/swirl.py"},{"args":{"cropBottom":0,"cropLeft":0,"cropRight":0,"cropTop":0,"file":":fire.gif","fps":25,"grayscale":false,"imageSource":"file","reverse":false,"smoothing-custom-settings":null},"file":":/effects/fire.json","name":"Fire","script":":/effects/gif.py"},{"args":{"countries":["de","se"],"smoothing-custom-settings":null,"switch-time":2},"file":":/effects/flag.json","name":"Flags Germany/Sweden","script":":/effects/flag.py"},{"args":{"baseChange":true,"baseColorChangeRate":0.2,"baseColorRangeLeft":0,"baseColorRangeRight":360,"blobs":5,"colorRandom":true,"hueChange":30,"reverse":false,"rotationTime":60,"smoothing-custom-settings":null},"file":":/effects/mood-blobs-full.json","name":"Full color mood blobs","script":":/effects/mood-blobs.py"},{"args":{"blobs":5,"color":[0,255,0],"hueChange":60,"reverse":false,"rotationTime":60,"smoothing-custom-settings":null},"file":":/effects/mood-blobs-green.json","name":"Green mood blobs","script":":/effects/mood-blobs.py"},{"args":{"color":[255,0,0],"fadeFactor":0.7,"smoothing-custom-settings":null,"speed":1},"file":":/effects/knight-rider.json","name":"Knight rider","script":":/effects/knight-rider.py"},{"args":{"sleepTime":0.5,"smoothing-custom-settings":false,"smoothing-time_ms":500,"smoothing-updateFrequency":20,"testleds":"all"},"file":":/effects/ledtest.json","name":"Led Test","script":":/effects/ledtest.py"},{"args":{"background-color":[0,0,0],"hour-color":[0,0,255],"marker-color":[255,255,255],"marker-depth":0,"marker-enabled":false,"marker-width":5,"minute-color":[0,255,0],"second-color":[255,0,0],"show_seconds":true,"smoothing-custom-settings":null},"file":":/effects/light-clock.json","name":"Light clock","script":":/effects/light-clock.py"},{"args":{"cropBottom":0,"cropLeft":0,"cropRight":0,"cropTop":0,"file":":lights.gif","fps":25,"grayscale":false,"imageSource":"file","reverse":false,"smoothing-custom-settings":null},"file":":/effects/lights.json","name":"Lights","script":":/effects/gif.py"},{"args":{"cropBottom":0,"cropLeft":0,"cropRight":0,"cropTop":0,"fps":30,"grayscale":false,"imageSource":"url","reverse":false,"smoothing-custom-settings":null,"url":"https://i.gifer.com/embedded/download/1j6F.gif"},"file":":/effects/matrix.json","name":"Matrix","script":":/effects/gif.py"},{"args":{"color-end":[0,0,255],"color-end-time":150,"color-start":[0,0,50],"color-start-time":40,"fade-in-time":200,"fade-out-time":100,"maintain-end-color":false,"repeat-count":3,"smoothing-custom-settings":null},"file":":/effects/notify-blue.json","name":"Notify blue","script":":/effects/fade.py"},{"args":{"margin-pos":2,"rotationTime":4,"smoothing-custom-settings":null},"file":":/effects/pacman.json","name":"Pac-Man","script":":/effects/pacman.py"},{"args":{"sleepTime":0.2,"smoothing-custom-settings":null},"file":":/effects/plasma.json","name":"Plasma","script":":/effects/plasma.py"},{"args":{"color_one":[255,0,0],"color_two":[0,0,255],"colors_count":10,"reverse":false,"rotation-time":1.5,"smoothing-custom-settings":null},"file":":/effects/police-lights-single.json","name":"Police Lights Single","script":":/effects/police.py"},{"args":{"color_one":[255,0,0],"color_two":[0,0,255],"reverse":false,"rotation-time":1,"smoothing-custom-settings":null},"file":":/effects/police-lights-solid.json","name":"Police Lights Solid","script":":/effects/police.py"},{"args":{"brightness":100,"reverse":false,"rotation-time":60,"smoothing-custom-settings":null},"file":":/effects/rainbow-mood.json","name":"Rainbow mood","script":":/effects/rainbow-mood.py"},{"args":{"center_x":0.5,"center_y":0.5,"custom-colors":[],"custom-colors2":[],"enable-second":false,"random-center":false,"reverse":false,"rotation-time":20,"smoothing-custom-settings":true,"smoothing-time_ms":200,"smoothing-updateFrequency":25},"file":":/effects/rainbow-swirl.json","name":"Rainbow swirl","script":":/effects/swirl.py"},{"args":{"center_x":0.5,"center_y":0.5,"custom-colors":[],"custom-colors2":[],"enable-second":false,"random-center":false,"reverse":false,"rotation-time":7,"smoothing-custom-settings":null},"file":":/effects/rainbow-swirl-fast.json","name":"Rainbow swirl fast","script":":/effects/swirl.py"},{"args":{"saturation":1,"smoothing-custom-settings":true,"smoothing-time_ms":200,"smoothing-updateFrequency":20,"speed":750},"file":":/effects/random.json","name":"Random","script":":/effects/random.py"},{"args":{"blobs":5,"color":[255,0,0],"hueChange":60,"reverse":false,"rotationTime":60,"smoothing-custom-settings":null},"file":":/effects/mood-blobs-red.json","name":"Red mood blobs","script":":/effects/mood-blobs.py"},{"args":{"center_x":1.25,"center_y":-0.25,"colors":[[8,0,255],[0,161,255],[0,222,255],[0,153,255],[38,0,255],[0,199,255]],"random-center":false,"reverse":false,"reverse_time":0,"rotation_time":60,"smoothing-custom-settings":true,"smoothing-time_ms":200,"smoothing-updateFrequency":25},"file":":/effects/Seawaves.json","name":"Sea waves","script":":/effects/waves.py"},{"args":{"background-color":[0,0,0],"color":[255,0,0],"percentage":10,"rotation-time":12,"smoothing-custom-settings":null},"file":":/effects/snake.json","name":"Snake","script":":/effects/snake.py"},{"args":{"brightness":100,"color":[255,255,255],"random-color":false,"rotation-time":3,"saturation":100,"sleep-time":0.05,"smoothing-custom-settings":null},"file":":/effects/sparks.json","name":"Sparks","script":":/effects/sparks.py"},{"args":{"color-end":[0,0,0],"color-end-time":100,"color-start":[255,0,0],"color-start-time":100,"fade-in-time":100,"fade-out-time":100,"maintain-end-color":true,"repeat-count":0,"smoothing-custom-settings":null},"file":":/effects/strobe-red.json","name":"Strobe red","script":":/effects/fade.py"},{"args":{"color-end":[0,0,0],"color-end-time":10,"color-start":[255,255,255],"color-start-time":50,"fade-in-time":0,"fade-out-time":100,"maintain-end-color":true,"repeat-count":0,"smoothing-custom-settings":null},"file":":/effects/strobe-white.json","name":"Strobe white","script":":/effects/fade.py"},{"args":{"alarm-color":[255,0,0],"initial-blink":true,"post-color":[255,174,11],"set-post-color":true,"shutdown-enabled":false,"smoothing-custom-settings":null,"speed":1.2},"file":":/effects/shutdown.json","name":"System Shutdown","script":":/effects/shutdown.py"},{"args":{"color":[255,255,255],"height":8,"max_len":7,"min_len":2,"random":false,"smoothing-custom-settings":null,"speed":30,"trails":3},"file":":/effects/trails.json","name":"Trails","script":":/effects/trails.py"},{"args":{"color":[255,255,255],"height":8,"max_len":6,"min_len":2,"random":true,"smoothing-custom-settings":null,"speed":50,"trails":16},"file":":/effects/trails_color.json","name":"Trails color","script":":/effects/trails.py"},{"args":{"baseChange":true,"baseColorChangeRate":2,"baseColorRangeLeft":333,"baseColorRangeRight":151,"blobs":5,"color":[255,0,0],"hueChange":30,"reverse":false,"rotationTime":60,"smoothing-custom-settings":true,"smoothing-time_ms":200,"smoothing-updateFrequency":25},"file":":/effects/mood-blobs-warm.json","name":"Warm mood blobs","script":":/effects/mood-blobs.py"},{"args":{"reverse":false,"smoothing-custom-settings":null},"file":":/effects/waves.json","name":"Waves with Color","script":":/effects/waves.py"},{"args":{"color1":[255,255,255],"color2":[255,0,0],"length":1,"sleepTime":750,"smoothing-custom-settings":null},"file":":/effects/x-mas.json","name":"X-Mas","script":":/effects/x-mas.py"}],"grabbers":{"audio":{"active":[],"available":["audio"]},"screen":{"active":["Qt"],"available":["framebuffer","x11","xcb","qt"]},"video":{"active":["V4L2"],"available":["v4l2"]}},"hostname":"hyperion","imageToLedMappingType":"multicolor_mean","instance":[{"friendly_name":"First LED Hardware instance","instance":0,"running":true}],"ledDevices":{"available":["adalight","apa102","apa104","atmo","atmoorb","cololight","dmx","fadecandy","file","hyperionusbasp","karate","lightpack","lpd6803","lpd8806","nanoleaf","p9813","paintpack","philipshue","piblaster","rawhid","razer","sedu","sk6812spi","sk6822spi","sk9822","tinkerforge","tpm2","tpm2net","udpartnet","udpddp","udpe131","udph801","udpraw","wled","ws2801","ws2812spi","yeelight"]},"leds":[{"hmax":0.5235,"hmin":0.49,"vmax":1,"vmin":0.99},{"hmax":0.537,"hmin":0.5035,"vmax":1,"vmin":0.99},{"hmax":0.5505,"hmin":0.517,"vmax":1,"vmin":0.99},{"hmax":0.5641,"hmin":0.5305,"vmax":1,"vmin":0.99},{"hmax":0.5776,"hmin":0.5441,"vmax":1,"vmin":0.99},{"hmax":0.5911,"hmin":0.5576,"vmax":1,"vmin":0.99},{"hmax":0.6046,"hmin":0.5711,"vmax":1,"vmin":0.99},{"hmax":0.6181,"hmin":0.5846,"vmax":1,"vmin":0.99},{"hmax":0.6316,"hmin":0.5981,"vmax":1,"vmin":0.99},{"hmax":0.6451,"hmin":0.6116,"vmax":1,"vmin":0.99},{"hmax":0.6586,"hmin":0.6251,"vmax":1,"vmin":0.99},{"hmax":0.6722,"hmin":0.6386,"vmax":1,"vmin":0.99},{"hmax":0.6857,"hmin":0.6522,"vmax":1,"vmin":0.99},{"hmax":0.6992,"hmin":0.6657,"vmax":1,"vmin":0.99},{"hmax":0.7127,"hmin":0.6792,"vmax":1,"vmin":0.99},{"hmax":0.7262,"hmin":0.6927,"vmax":1,"vmin":0.99},{"hmax":0.7397,"hmin":0.7062,"vmax":1,"vmin":0.99},{"hmax":0.7532,"hmin":0.7197,"vmax":1,"vmin":0.99},{"hmax":0.7668,"hmin":0.7332,"vmax":1,"vmin":0.99},{"hmax":0.7803,"hmin":0.7468,"vmax":1,"vmin":0.99},{"hmax":0.7938,"hmin":0.7603,"vmax":1,"vmin":0.99},{"hmax":0.8073,"hmin":0.7738,"vmax":1,"vmin":0.99},{"hmax":0.8208,"hmin":0.7873,"vmax":1,"vmin":0.99},{"hmax":0.8343,"hmin":0.8008,"vmax":1,"vmin":0.99},{"hmax":0.8478,"hmin":0.8143,"vmax":1,"vmin":0.99},{"hmax":0.8614,"hmin":0.8278,"vmax":1,"vmin":0.99},{"hmax":0.8749,"hmin":0.8414,"vmax":1,"vmin":0.99},{"hmax":0.8884,"hmin":0.8549,"vmax":1,"vmin":0.99},{"hmax":0.9019,"hmin":0.8684,"vmax":1,"vmin":0.99},{"hmax":0.9154,"hmin":0.8819,"vmax":1,"vmin":0.99},{"hmax":0.9289,"hmin":0.8954,"vmax":1,"vmin":0.99},{"hmax":0.9424,"hmin":0.9089,"vmax":1,"vmin":0.99},{"hmax":0.9559,"hmin":0.9224,"vmax":1,"vmin":0.99},{"hmax":0.9695,"hmin":0.9359,"vmax":1,"vmin":0.99},{"hmax":0.983,"hmin":0.9495,"vmax":1,"vmin":0.99},{"hmax":0.9965,"hmin":0.963,"vmax":1,"vmin":0.99},{"hmax":1,"hmin":0.9765,"vmax":1,"vmin":0.99},{"hmax":1,"hmin":0.99,"vmax":1,"vmin":0.9683},{"hmax":1,"hmin":0.99,"vmax":0.9883,"vmin":0.9465},{"hmax":1,"hmin":0.99,"vmax":0.9665,"vmin":0.9248},{"hmax":1,"hmin":0.99,"vmax":0.9448,"vmin":0.903},{"hmax":1,"hmin":0.99,"vmax":0.923,"vmin":0.8813},{"hmax":1,"hmin":0.99,"vmax":0.9013,"vmin":0.8596},{"hmax":1,"hmin":0.99,"vmax":0.8796,"vmin":0.8378},{"hmax":1,"hmin":0.99,"vmax":0.8578,"vmin":0.8161},{"hmax":1,"hmin":0.99,"vmax":0.8361,"vmin":0.7943},{"hmax":1,"hmin":0.99,"vmax":0.8143,"vmin":0.7726},{"hmax":1,"hmin":0.99,"vmax":0.7926,"vmin":0.7509},{"hmax":1,"hmin":0.99,"vmax":0.7709,"vmin":0.7291},{"hmax":1,"hmin":0.99,"vmax":0.7491,"vmin":0.7074},{"hmax":1,"hmin":0.99,"vmax":0.7274,"vmin":0.6857},{"hmax":1,"hmin":0.99,"vmax":0.7057,"vmin":0.6639},{"hmax":1,"hmin":0.99,"vmax":0.6839,"vmin":0.6422},{"hmax":1,"hmin":0.99,"vmax":0.6622,"vmin":0.6204},{"hmax":1,"hmin":0.99,"vmax":0.6404,"vmin":0.5987},{"hmax":1,"hmin":0.99,"vmax":0.6187,"vmin":0.577},{"hmax":1,"hmin":0.99,"vmax":0.597,"vmin":0.5552},{"hmax":1,"hmin":0.99,"vmax":0.5752,"vmin":0.5335},{"hmax":1,"hmin":0.99,"vmax":0.5535,"vmin":0.5117},{"hmax":1,"hmin":0.99,"vmax":0.5317,"vmin":0.49},{"hmax":1,"hmin":0.99,"vmax":0.51,"vmin":0.4683},{"hmax":1,"hmin":0.99,"vmax":0.4883,"vmin":0.4465},{"hmax":1,"hmin":0.99,"vmax":0.4665,"vmin":0.4248},{"hmax":1,"hmin":0.99,"vmax":0.4448,"vmin":0.403},{"hmax":1,"hmin":0.99,"vmax":0.423,"vmin":0.3813},{"hmax":1,"hmin":0.99,"vmax":0.4013,"vmin":0.3596},{"hmax":1,"hmin":0.99,"vmax":0.3796,"vmin":0.3378},{"hmax":1,"hmin":0.99,"vmax":0.3578,"vmin":0.3161},{"hmax":1,"hmin":0.99,"vmax":0.3361,"vmin":0.2943},{"hmax":1,"hmin":0.99,"vmax":0.3143,"vmin":0.2726},{"hmax":1,"hmin":0.99,"vmax":0.2926,"vmin":0.2509},{"hmax":1,"hmin":0.99,"vmax":0.2709,"vmin":0.2291},{"hmax":1,"hmin":0.99,"vmax":0.2491,"vmin":0.2074},{"hmax":1,"hmin":0.99,"vmax":0.2274,"vmin":0.1857},{"hmax":1,"hmin":0.99,"vmax":0.2057,"vmin":0.1639},{"hmax":1,"hmin":0.99,"vmax":0.1839,"vmin":0.1422},{"hmax":1,"hmin":0.99,"vmax":0.1622,"vmin":0.1204},{"hmax":1,"hmin":0.99,"vmax":0.1404,"vmin":0.0987},{"hmax":1,"hmin":0.99,"vmax":0.1187,"vmin":0.077},{"hmax":1,"hmin":0.99,"vmax":0.097,"vmin":0.0552},{"hmax":1,"hmin":0.99,"vmax":0.0752,"vmin":0.0335},{"hmax":1,"hmin":0.99,"vmax":0.0535,"vmin":0.0117},{"hmax":1,"hmin":0.99,"vmax":0.0317,"vmin":0},{"hmax":1,"hmin":0.9765,"vmax":0.01,"vmin":0},{"hmax":0.9965,"hmin":0.963,"vmax":0.01,"vmin":0},{"hmax":0.983,"hmin":0.9495,"vmax":0.01,"vmin":0},{"hmax":0.9695,"hmin":0.9359,"vmax":0.01,"vmin":0},{"hmax":0.9559,"hmin":0.9224,"vmax":0.01,"vmin":0},{"hmax":0.9424,"hmin":0.9089,"vmax":0.01,"vmin":0},{"hmax":0.9289,"hmin":0.8954,"vmax":0.01,"vmin":0},{"hmax":0.9154,"hmin":0.8819,"vmax":0.01,"vmin":0},{"hmax":0.9019,"hmin":0.8684,"vmax":0.01,"vmin":0},{"hmax":0.8884,"hmin":0.8549,"vmax":0.01,"vmin":0},{"hmax":0.8749,"hmin":0.8414,"vmax":0.01,"vmin":0},{"hmax":0.8614,"hmin":0.8278,"vmax":0.01,"vmin":0},{"hmax":0.8478,"hmin":0.8143,"vmax":0.01,"vmin":0},{"hmax":0.8343,"hmin":0.8008,"vmax":0.01,"vmin":0},{"hmax":0.8208,"hmin":0.7873,"vmax":0.01,"vmin":0},{"hmax":0.8073,"hmin":0.7738,"vmax":0.01,"vmin":0},{"hmax":0.7938,"hmin":0.7603,"vmax":0.01,"vmin":0},{"hmax":0.7803,"hmin":0.7468,"vmax":0.01,"vmin":0},{"hmax":0.7668,"hmin":0.7332,"vmax":0.01,"vmin":0},{"hmax":0.7532,"hmin":0.7197,"vmax":0.01,"vmin":0},{"hmax":0.7397,"hmin":0.7062,"vmax":0.01,"vmin":0},{"hmax":0.7262,"hmin":0.6927,"vmax":0.01,"vmin":0},{"hmax":0.7127,"hmin":0.6792,"vmax":0.01,"vmin":0},{"hmax":0.6992,"hmin":0.6657,"vmax":0.01,"vmin":0},{"hmax":0.6857,"hmin":0.6522,"vmax":0.01,"vmin":0},{"hmax":0.6722,"hmin":0.6386,"vmax":0.01,"vmin":0},{"hmax":0.6586,"hmin":0.6251,"vmax":0.01,"vmin":0},{"hmax":0.6451,"hmin":0.6116,"vmax":0.01,"vmin":0},{"hmax":0.6316,"hmin":0.5981,"vmax":0.01,"vmin":0},{"hmax":0.6181,"hmin":0.5846,"vmax":0.01,"vmin":0},{"hmax":0.6046,"hmin":0.5711,"vmax":0.01,"vmin":0},{"hmax":0.5911,"hmin":0.5576,"vmax":0.01,"vmin":0},{"hmax":0.5776,"hmin":0.5441,"vmax":0.01,"vmin":0},{"hmax":0.5641,"hmin":0.5305,"vmax":0.01,"vmin":0},{"hmax":0.5505,"hmin":0.517,"vmax":0.01,"vmin":0},{"hmax":0.537,"hmin":0.5035,"vmax":0.01,"vmin":0},{"hmax":0.5235,"hmin":0.49,"vmax":0.01,"vmin":0},{"hmax":0.51,"hmin":0.4765,"vmax":0.01,"vmin":0},{"hmax":0.4965,"hmin":0.463,"vmax":0.01,"vmin":0},{"hmax":0.483,"hmin":0.4495,"vmax":0.01,"vmin":0},{"hmax":0.4695,"hmin":0.4359,"vmax":0.01,"vmin":0},{"hmax":0.4559,"hmin":0.4224,"vmax":0.01,"vmin":0},{"hmax":0.4424,"hmin":0.4089,"vmax":0.01,"vmin":0},{"hmax":0.4289,"hmin":0.3954,"vmax":0.01,"vmin":0},{"hmax":0.4154,"hmin":0.3819,"vmax":0.01,"vmin":0},{"hmax":0.4019,"hmin":0.3684,"vmax":0.01,"vmin":0},{"hmax":0.3884,"hmin":0.3549,"vmax":0.01,"vmin":0},{"hmax":0.3749,"hmin":0.3414,"vmax":0.01,"vmin":0},{"hmax":0.3614,"hmin":0.3278,"vmax":0.01,"vmin":0},{"hmax":0.3478,"hmin":0.3143,"vmax":0.01,"vmin":0},{"hmax":0.3343,"hmin":0.3008,"vmax":0.01,"vmin":0},{"hmax":0.3208,"hmin":0.2873,"vmax":0.01,"vmin":0},{"hmax":0.3073,"hmin":0.2738,"vmax":0.01,"vmin":0},{"hmax":0.2938,"hmin":0.2603,"vmax":0.01,"vmin":0},{"hmax":0.2803,"hmin":0.2468,"vmax":0.01,"vmin":0},{"hmax":0.2668,"hmin":0.2332,"vmax":0.01,"vmin":0},{"hmax":0.2532,"hmin":0.2197,"vmax":0.01,"vmin":0},{"hmax":0.2397,"hmin":0.2062,"vmax":0.01,"vmin":0},{"hmax":0.2262,"hmin":0.1927,"vmax":0.01,"vmin":0},{"hmax":0.2127,"hmin":0.1792,"vmax":0.01,"vmin":0},{"hmax":0.1992,"hmin":0.1657,"vmax":0.01,"vmin":0},{"hmax":0.1857,"hmin":0.1522,"vmax":0.01,"vmin":0},{"hmax":0.1722,"hmin":0.1386,"vmax":0.01,"vmin":0},{"hmax":0.1586,"hmin":0.1251,"vmax":0.01,"vmin":0},{"hmax":0.1451,"hmin":0.1116,"vmax":0.01,"vmin":0},{"hmax":0.1316,"hmin":0.0981,"vmax":0.01,"vmin":0},{"hmax":0.1181,"hmin":0.0846,"vmax":0.01,"vmin":0},{"hmax":0.1046,"hmin":0.0711,"vmax":0.01,"vmin":0},{"hmax":0.0911,"hmin":0.0576,"vmax":0.01,"vmin":0},{"hmax":0.0776,"hmin":0.0441,"vmax":0.01,"vmin":0},{"hmax":0.0641,"hmin":0.0305,"vmax":0.01,"vmin":0},{"hmax":0.0505,"hmin":0.017,"vmax":0.01,"vmin":0},{"hmax":0.037,"hmin":0.0035,"vmax":0.01,"vmin":0},{"hmax":0.0235,"hmin":0,"vmax":0.01,"vmin":0},{"hmax":0.01,"hmin":0,"vmax":0.0317,"vmin":0},{"hmax":0.01,"hmin":0,"vmax":0.0535,"vmin":0.0117},{"hmax":0.01,"hmin":0,"vmax":0.0752,"vmin":0.0335},{"hmax":0.01,"hmin":0,"vmax":0.097,"vmin":0.0552},{"hmax":0.01,"hmin":0,"vmax":0.1187,"vmin":0.077},{"hmax":0.01,"hmin":0,"vmax":0.1404,"vmin":0.0987},{"hmax":0.01,"hmin":0,"vmax":0.1622,"vmin":0.1204},{"hmax":0.01,"hmin":0,"vmax":0.1839,"vmin":0.1422},{"hmax":0.01,"hmin":0,"vmax":0.2057,"vmin":0.1639},{"hmax":0.01,"hmin":0,"vmax":0.2274,"vmin":0.1857},{"hmax":0.01,"hmin":0,"vmax":0.2491,"vmin":0.2074},{"hmax":0.01,"hmin":0,"vmax":0.2709,"vmin":0.2291},{"hmax":0.01,"hmin":0,"vmax":0.2926,"vmin":0.2509},{"hmax":0.01,"hmin":0,"vmax":0.3143,"vmin":0.2726},{"hmax":0.01,"hmin":0,"vmax":0.3361,"vmin":0.2943},{"hmax":0.01,"hmin":0,"vmax":0.3578,"vmin":0.3161},{"hmax":0.01,"hmin":0,"vmax":0.3796,"vmin":0.3378},{"hmax":0.01,"hmin":0,"vmax":0.4013,"vmin":0.3596},{"hmax":0.01,"hmin":0,"vmax":0.423,"vmin":0.3813},{"hmax":0.01,"hmin":0,"vmax":0.4448,"vmin":0.403},{"hmax":0.01,"hmin":0,"vmax":0.4665,"vmin":0.4248},{"hmax":0.01,"hmin":0,"vmax":0.4883,"vmin":0.4465},{"hmax":0.01,"hmin":0,"vmax":0.51,"vmin":0.4683},{"hmax":0.01,"hmin":0,"vmax":0.5317,"vmin":0.49},{"hmax":0.01,"hmin":0,"vmax":0.5535,"vmin":0.5117},{"hmax":0.01,"hmin":0,"vmax":0.5752,"vmin":0.5335},{"hmax":0.01,"hmin":0,"vmax":0.597,"vmin":0.5552},{"hmax":0.01,"hmin":0,"vmax":0.6187,"vmin":0.577},{"hmax":0.01,"hmin":0,"vmax":0.6404,"vmin":0.5987},{"hmax":0.01,"hmin":0,"vmax":0.6622,"vmin":0.6204},{"hmax":0.01,"hmin":0,"vmax":0.6839,"vmin":0.6422},{"hmax":0.01,"hmin":0,"vmax":0.7057,"vmin":0.6639},{"hmax":0.01,"hmin":0,"vmax":0.7274,"vmin":0.6857},{"hmax":0.01,"hmin":0,"vmax":0.7491,"vmin":0.7074},{"hmax":0.01,"hmin":0,"vmax":0.7709,"vmin":0.7291},{"hmax":0.01,"hmin":0,"vmax":0.7926,"vmin":0.7509},{"hmax":0.01,"hmin":0,"vmax":0.8143,"vmin":0.7726},{"hmax":0.01,"hmin":0,"vmax":0.8361,"vmin":0.7943},{"hmax":0.01,"hmin":0,"vmax":0.8578,"vmin":0.8161},{"hmax":0.01,"hmin":0,"vmax":0.8796,"vmin":0.8378},{"hmax":0.01,"hmin":0,"vmax":0.9013,"vmin":0.8596},{"hmax":0.01,"hmin":0,"vmax":0.923,"vmin":0.8813},{"hmax":0.01,"hmin":0,"vmax":0.9448,"vmin":0.903},{"hmax":0.01,"hmin":0,"vmax":0.9665,"vmin":0.9248},{"hmax":0.01,"hmin":0,"vmax":0.9883,"vmin":0.9465},{"hmax":0.01,"hmin":0,"vmax":1,"vmin":0.9683},{"hmax":0.0235,"hmin":0,"vmax":1,"vmin":0.99},{"hmax":0.037,"hmin":0.0035,"vmax":1,"vmin":0.99},{"hmax":0.0505,"hmin":0.017,"vmax":1,"vmin":0.99},{"hmax":0.0641,"hmin":0.0305,"vmax":1,"vmin":0.99},{"hmax":0.0776,"hmin":0.0441,"vmax":1,"vmin":0.99},{"hmax":0.0911,"hmin":0.0576,"vmax":1,"vmin":0.99},{"hmax":0.1046,"hmin":0.0711,"vmax":1,"vmin":0.99},{"hmax":0.1181,"hmin":0.0846,"vmax":1,"vmin":0.99},{"hmax":0.1316,"hmin":0.0981,"vmax":1,"vmin":0.99},{"hmax":0.1451,"hmin":0.1116,"vmax":1,"vmin":0.99},{"hmax":0.1586,"hmin":0.1251,"vmax":1,"vmin":0.99},{"hmax":0.1722,"hmin":0.1386,"vmax":1,"vmin":0.99},{"hmax":0.1857,"hmin":0.1522,"vmax":1,"vmin":0.99},{"hmax":0.1992,"hmin":0.1657,"vmax":1,"vmin":0.99},{"hmax":0.2127,"hmin":0.1792,"vmax":1,"vmin":0.99},{"hmax":0.2262,"hmin":0.1927,"vmax":1,"vmin":0.99},{"hmax":0.2397,"hmin":0.2062,"vmax":1,"vmin":0.99},{"hmax":0.2532,"hmin":0.2197,"vmax":1,"vmin":0.99},{"hmax":0.2668,"hmin":0.2332,"vmax":1,"vmin":0.99},{"hmax":0.2803,"hmin":0.2468,"vmax":1,"vmin":0.99},{"hmax":0.2938,"hmin":0.2603,"vmax":1,"vmin":0.99},{"hmax":0.3073,"hmin":0.2738,"vmax":1,"vmin":0.99},{"hmax":0.3208,"hmin":0.2873,"vmax":1,"vmin":0.99},{"hmax":0.3343,"hmin":0.3008,"vmax":1,"vmin":0.99},{"hmax":0.3478,"hmin":0.3143,"vmax":1,"vmin":0.99},{"hmax":0.3614,"hmin":0.3278,"vmax":1,"vmin":0.99},{"hmax":0.3749,"hmin":0.3414,"vmax":1,"vmin":0.99},{"hmax":0.3884,"hmin":0.3549,"vmax":1,"vmin":0.99},{"hmax":0.4019,"hmin":0.3684,"vmax":1,"vmin":0.99},{"hmax":0.4154,"hmin":0.3819,"vmax":1,"vmin":0.99},{"hmax":0.4289,"hmin":0.3954,"vmax":1,"vmin":0.99},{"hmax":0.4424,"hmin":0.4089,"vmax":1,"vmin":0.99},{"hmax":0.4559,"hmin":0.4224,"vmax":1,"vmin":0.99},{"hmax":0.4695,"hmin":0.4359,"vmax":1,"vmin":0.99},{"hmax":0.483,"hmin":0.4495,"vmax":1,"vmin":0.99},{"hmax":0.4965,"hmin":0.463,"vmax":1,"vmin":0.99},{"hmax":0.51,"hmin":0.4765,"vmax":1,"vmin":0.99}],"priorities":[{"active":true,"componentId":"COLOR","origin":"Home Assistant@::ffff:192.168.1.104","priority":128,"value":{"HSL":[65535,0,1],"RGB":[255,255,255]},"visible":true},{"active":true,"componentId":"V4L","origin":"System","owner":"V4L2","priority":240,"visible":false},{"active":false,"componentId":"GRABBER","origin":"System","priority":250,"visible":false}],"priorities_autoselect":true,"services":["boblight","cec","effectengine","forwarder","flatbuffer","protobuffer","mDNS","SSDP","borderdetection"],"transform":[{"blacklevel":[0,0,0],"brightnessGain":1,"gamma":[2.5,2.5,2.5],"id":"default","luminanceGain":1,"luminanceMinimum":0,"saturationGain":1,"saturationLGain":1,"threshold":[0,0,0],"whitelevel":[1,1,1]}],"videomode":"2D"},"instance":0,"success":true,"tan":1}\n'
2023-08-04 20:17:49.066 DEBUG (MainThread) [hyperion.client] Send to server (192.168.1.102:19444): b'{"command": "ledcolors", "subcommand": "imagestream-start"}\n'
2023-08-04 20:17:49.122 DEBUG (MainThread) [hyperion.client] Read from server (192.168.1.102:19444): b'{"command":"ledcolors-imagestream-start","instance":0,"success":true,"tan":0}\n'
2023-08-04 20:18:04.871 DEBUG (MainThread) [hyperion.client] Send to server (192.168.1.102:19444): b'{"command": "ledcolors", "subcommand": "imagestream-stop"}\n'
2023-08-04 20:18:04.878 DEBUG (MainThread) [hyperion.client] Read from server (192.168.1.102:19444): b'{"command":"ledcolors-imagestream-stop","instance":0,"success":true,"tan":0}\n'
2023-08-04 20:20:04.479 DEBUG (MainThread) [hyperion.client] Send to server (192.168.1.102:19444): b'{"command": "componentstate", "componentstate": {"component": "LEDDEVICE", "state": true}}\n'
2023-08-04 20:20:04.482 DEBUG (MainThread) [hyperion.client] Read from server (192.168.1.102:19444): b'{"command":"componentstate","instance":0,"success":true,"tan":0}\n'
dermotduffy commented 11 months ago

Extra translation for the Hyperion devs (from the author of the HA integration for Hyperion), for the parts that matter by my eye:

Here the integration subscribes to component changes via the JSON API ->

2023-08-04 20:13:00.750 DEBUG (MainThread) [hyperion.client] Send to server (192.168.1.102:19444): b'{"command": "serverinfo", "subscribe": ["adjustment-update", "components-update", "effects-update", "leds-update", "imageToLedMapping-update", "instance-update", "priorities-update", "sessions-update", "videomode-update"], "tan": 1}\n'

Here the user toggles the state of the LEDDEVICE ->

2023-08-04 20:20:04.479 DEBUG (MainThread) [hyperion.client] Send to server (192.168.1.102:19444): b'{"command": "componentstate", "componentstate": {"component": "LEDDEVICE", "state": true}}\n'

Here Hyperion acknowledges the request ->

2023-08-04 20:20:04.482 DEBUG (MainThread) [hyperion.client] Read from server (192.168.1.102:19444): b'{"command":"componentstate","instance":0,"success":true,"tan":0}\n'

But what's absent is the component update callback that was subscribed to. Home Assistant uses that callback to update its state.

PS: Maybe a red herring, but I do not expect to see the tan to be the same in responses, I thought that should increment.

Lord-Grey commented 11 months ago

@dermotduffy That for the extra translation that very much helped to get the problem statement.

@danielbrunt57 Would you mind sharing next to the HA-log also a Hyperion debug log including the Hyperion configuration, please?

I tried to reproduce, but there the callback response is there. Note: I have not tested HA, but just looking at the messages exchanged to rule out any HA impact first.

I would like to understand what might be the difference in you set-up and behaviour of your network devices. In case the LED-Device is already On before executing the command, there is no extra feedback.

image

In general, you should have WLED "Autostart" disabled or have 0 retries. That would ensure, if HA and Hyperion share the same state at the beginning. Otherwise wit might happen, that Hyperion with the new retry feature opens the device and fails first round. HA checks for the device status which is closed. Then 2nd retry is done and the device is on. If now HA send an switch on request, there is no callback, as the device is already on.

I assume that the retry mechanism is not considered, why the above behaviour is seen....

image

Lord-Grey commented 11 months ago

@dermotduffy

PS: Maybe a red herring, but I do not expect to see the tan to be the same in responses, I thought that should increment.

The tan in the response is the one send with the request, that you can correlate request and response. As you do not sent a tan, the returned tan is zero.

Send to server (192.168.1.102:19444): b'{"command": "componentstate", "componentstate": {"component": "LEDDEVICE", "state": true}}\n'

If you provide a tan with the request, the same is returned with the response. Please see below, where I send a request with tan=23.

image

Lord-Grey commented 11 months ago

@danielbrunt57 Same on Forwarder If the Forwarder is already enabled you will not get an status update. Try to disable the Forwarder via Hyperion's dashboard and then enable the Forwarder via HA.

See here the network requests and responses

image

And corresponding Hyperion log

Disable Forwarder (manually)

2023-08-05T18:13:52.230 |I0| NETFORWARDER      : <INFO> Forwarder is disabled
2023-08-05T18:13:52.230 |I0| NETFORWARDER      : <INFO> Stopped forwarding to JSON-target host: 2003:e4:c722:f53b:ca63:14ff:fe70:cc80 port: 19444
2023-08-05T18:13:52.230 |I0| COMPONENTREG      : <DEBUG> ComponentRegister.cpp:89:setNewComponentState() | Json/Proto forwarder: disabled

Now enable the Forwarder via API-Command

2023-08-05T18:14:14.100 |I0| NETFORWARDER      : <INFO> Forwarder is enabled
2023-08-05T18:14:14.101 |I0| NETFORWARDER      : <INFO> Resolved service [fergusv._hyperiond-json._tcp.local] to mDNS hostname [fergusv-2.local.], service port [19444]
2023-08-05T18:14:14.101 |I0| NETFORWARDER      : <INFO> Resolved hostname (fergusv._hyperiond-json._tcp.local) to IP-address (2003:e4:c722:f53b:ca63:14ff:fe70:cc80)
2023-08-05T18:14:14.101 |I0| NETFORWARDER      : <INFO> Resolved hostname [fergusv._hyperiond-json._tcp.local] to address [2003:e4:c722:f53b:ca63:14ff:fe70:cc80]
2023-08-05T18:14:14.102 |I0| NETFORWARDER      : <DEBUG> MessageForwarder.cpp:237:addJsonTarget() | JSON-Forwarder settings: Adding target host: 2003:e4:c722:f53b:ca63:14ff:fe70:cc80 port: 19444
2023-08-05T18:14:14.102 |I0| NETFORWARDER      : <INFO> Forwarding now to JSON-target host: 2003:e4:c722:f53b:ca63:14ff:fe70:cc80 port: 19444
2023-08-05T18:14:14.102 |I0| COMPONENTREG      : <DEBUG> ComponentRegister.cpp:89:setNewComponentState() | Json/Proto forwarder: enabled

I appreciate that the Forwarder currently has no ability to have it disabled during startup.

dermotduffy commented 11 months ago

@Lord-Grey I'm not quite following this. From an API callers perspective, I would expect to get the initial live state from the first serverinfo command that also requests the subscriptions, and for all subsequent changes to be pushed to me. In my mental model, a desync should not be possible here.

Are there circumstances in which the above is not the behavior?

Perhaps the missing piece of info was that HA is respecting the initial state as published in the first serverinfo command (the hyperion-py library is doing this).

Lord-Grey commented 11 months ago

@dermotduffy In general, I agree with your expectations.

My current assumption is that it could be a timing issue.

  1. Hyperion starts
  2. The first auto LED start failed and Hyperion starts retries
  3. The ServerInfo responds Devide is disabled
  4. Retry succeed and LED Device is enabled, update is send to websocket
  5. HA requests to enable the LED device, but the device is already on; therefore no update is sent

It would be good to understand at which time the Hyperion HA add-on starts processing callbacks and if there could be a time period where ServerInfo thinks "disabled", a "enabled" update comes in, but is not yet processed. That would result in a not synced state.

To better track this down, I asked for a corresponding Hyperion log, to actually see what is happening and it would hopefully allow to reproduce the failure.

danielbrunt57 commented 11 months ago

@Lord-Grey I won't be able to provide additional logs until I am back home tomorrow evening.

dermotduffy commented 11 months ago
  1. Retry succeed and LED Device is enabled, update is send to websocket

And at this point a subscription update is not sent? If that's the case, this is a good theory :-)

It would be good to understand at which time the Hyperion HA add-on starts processing callbacks and if there could be a time period where ServerInfo thinks "disabled", a "enabled" update comes in, but is not yet processed. That would result in a not synced state.

In general, as long as the subscription callback happens, HA should immediately reflect the true state. The library I linked to is continually listening to the callbacks from the very first serverinfo/subscription, and maintaining internal state. HA is using this internal state to determine if the light is on or off. Subscription calls from Hyperion result in that internal state being updated, and then from the library callbacks being issued "up" to HA to tell it re-examine the internal state in the library. HA itself doesn't actually maintain state, everything is based on the hyperion-py internal state (which is populated by the initial serverinfo call, and all the callbacks thereafter). Neither the library, nor HA, are multi-threaded. As such, I do not think there is a period where calls can be missed, since (i) the library is updating internal state from the very first subscription call, and (ii) since HA itself is not maintaining any state itself, just deferring to the library.

Let me know if I'm not answering the question.

Lord-Grey commented 11 months ago

@dermotduffy Thanks for elaborating.

I now installed Hyperion-HA myself.

I was able to reproduce a inconsistent scenario myself.

a) Hyperion is running and HA synced. b) I disable the LEDs in HA c) I stop Hyperion d) HA shows Hyperion is not on e) I start Hyperion with LEDs started f) HA sees Hyperion again, but keeps LED device off

At that point LED is off in HA, but on in Hyperion

I need to add some code to trace requests, responses and callback messages to better view the interactions....

Now I restarted the HA integration (assuming that the plugin starts from scratch), but the LED status still keeps to be off. I tested via an extra Websocket that the LEDDevice is on before to ensure a stable state.

Maybe you can advise how I should restart the HA integration best that it resets the processing...

Edit: Looks like I looked at the Instance not the device itself. Seems that HA does not recognise the instance is enabled.

danielbrunt57 commented 11 months ago

"Maybe you can advise how I should restart the HA integration best that it resets the processing..."

I believe the "reload integration" restarts processing. Screenshot_20230805_112010_Home Assistant

dermotduffy commented 11 months ago

Now I restarted the HA integration (assuming that the plugin starts from scratch), Maybe you can advise how I should restart the HA integration best that it resets the processing...

It does (state would be re-populated from the first serverinfo call). I recommend a complete Home Assistant restart to be sure when you're running these tests.

but the LED status still keeps to be off.

I have no explanation for this. Does the serverinfo call from Hyperion show the led status correctly?

Edit: Looks like I looked at the Instance not the device itself. Seems that HA does not recognise the instance is enabled.

Not quite following this piece, but I will say when there's a disconnection -- the library will keep trying to reconnect, and will entirely reset the internal state based on the contents of the first subsequent serverinfo call after the reconnect succeeds.

@danielbrunt57 Just to make sure we're not chasing a red herring, I'd suggest you turn off both Home Assistant and Hyperion. Then turn only Hyperion on, put the switches whatever way you want. Wait a minute or two. Then start Home Assistant. At this point, do the switches in Home Assistant match those in Hyperion? I suspect from your earlier comments they will. But then does a subsequent switch on/off from HA work? I suspect from your earlier comments they do not.

[This may help rule out or rule in any weirdness with timings / reconnections, etc -- I was assuming switches just never work, even if you have fresh started everything]

Lord-Grey commented 11 months ago

@dermotduffy I am not sure, if I am looking at the correct code of the HA plug-in… … but, if the below is the latest, then it cannot work.

https://github.com/home-assistant/core/blob/2e8e5aabaef9ee0624d8cf0dec6946d1a9b2dba1/homeassistant/components/hyperion/light.py#L233

In the above code the on/off state seems to be now derived from the fact, if a priority is active or not. This does not consider any longer the state of the LED Device. A priority will trigger to switch on a device, but if the device is switched off or failed, then there will be no output regardless, if a priority exists…

I have no python expertise, so I might have misinterpreted it.

dermotduffy commented 11 months ago

In the above code the on/off state seems to be now derived from the fact, if a priority is active or not. This does not consider any longer the state of the LED Device. A priority will trigger to switch on a device, but if the device is switched off or failed, then there will be no output regardless, if a priority exists…

Correct. This is the new (intentional, if controversial) behavior. It allows multiple Hyperion clients to better interoperate -- since some users were complaining that the prior HA behavior of just turning off the LEDDevice was "overriding" other Hyperion clients. Instead, it was changed to "on" meaning "has set a light at a given priority" and "off" meaning "has not set a light at a given priority".

This is separate from the switches, which can still be individually toggled, and which this issue is concerning. Switch code is here .

Lord-Grey commented 11 months ago

Hi

the main issue seems to be that the HA-light does not consider the LED-Device's state. The HA light must only be on, if the following condition applies:

HA-Priority is active in Hyperion AND LED-Device is enabled

This is an invalid sceanario from a user experience perspective

image

Lord-Grey commented 11 months ago

@danielbrunt57 / @dermotduffy / @Sab44

Besides the above, if was further thinking about the Integration scenarios... Looking at what I have seen before and what is discussed as part of the latest change in HA GitHub, I think we might want to take a step back and discuss the different problem statements which are out there and explore well defined solution options to solve each. What do you think?

I see following tree main scenarios

  1. As a User I would like to disable/enable whole Hyperion for processing including all instances, plus a) this would include that my Lights turn off/on, as well as other components in Hyperion b) this would include all components, besides LEDs which present a configured background effect

Solution options: Allow in HA to act on Hyperion as a whole. The suspend/resume, idle new API commands will support here (I know that documentation is pending :) ). for a. use suspend/resume/toggleSuspend to deactivate Hyperion processing (as when the OS goes into suspend mode or resumes) b. use idle/toggleIdle putting Hyperion in idle processing, but have background effect and LEDs running (as when screensavers would kick in)

  1. As a user, I would like to switch on/off LED Devices or other components regardless, if HA is streaming or not This would help to automate turning certain LED devices on/off to achieve certain light scenarios. e.g. turn on 1 LED device watching TV, but have all 3 LED devices on, if not watching TV. Alternative option might be to disable one or multiple Hyperion instances themselves and not purely the LED device (to be discussed)

  2. As a user, I would like to control a light configured in Hyperion, setting a color or an effect. I would like switching the light on and off. I would like to see, if any update applied to the light failed, in case the underlying device is not ready/in error or was manually switched off in Hyperion. Alternatively, I should not be able to update the light, if the underlying device is not ready.

Currently, in HA Hyperion components are inactive which make it hard for people to understand the difference between 2. and

  1. and therefore users project different sets of requirements into the HA light object.

Sorry, for the lengthy summary and not everything might detailed enough and there might be even more problem spaces out there. I had only a go helping to structure the discussion. It even might be that some supporting changes are required in Hyperion to make a good user experience happening. Happy to discuss further and make things happening.

dermotduffy commented 11 months ago

@Lord-Grey

the main issue seems to be that the HA-light does not consider the LED-Device's state. The HA light must only be on, if the following condition applies: HA-Priority is active in Hyperion AND LED-Device is enabled This is an invalid sceanario from a user experience perspective

I don't understand this. The behavior of the light entity is unrelated to the issue that was filed, which is purely about switches. You are pointing out that Home Assistant could respect the state of LED Device (and it used to), but I don't understand the link between that and the failure in the API calls the user is describing here.

i.e. I think you are talking about a UX point (which is a fine & legitimate topic), but not one related to the issue the user is having unless I'm missing some link?

dermotduffy commented 11 months ago

What do you think?

I think this is has evolved into more of an "architectural" conversation, which might warrant a new issue entirely.

I will say one thing here: The whole disconnect between how HA thinks about lighting, and how Hyperion does so, has been a continual heartache. You can see all the drama related to the recent change, and the changes before that. I agree a more user-journey focused approach, where HA & Hyperion act in concert to best meet those needs, would be better than what we have now. This is not something I have time to participate in, but I'd really love if someone had! In general, I think it would be great for "ownership" of Hyperion in HA (and the underlying library) to move closer to the Hyperion devs than it is today, as you are arguably best placed to own this integration and tie it into the development roadmap for Hyperion. I know this is easy for me to say :-)

danielbrunt57 commented 11 months ago

My only comment at this point is that the HA Hyperion integration is used by 1322 active installations and as such it would be nice to see Hyperion Devs either take over or assume an active part in or somehow work more closely with HA Hyperion integration devs.

Lord-Grey commented 11 months ago

The Hyperion Dev team lacks Python knowledge, therefore a takeover would not be possible. Nevertheless, I already indicated above that I am happy to support in getting this better integrated.

Lord-Grey commented 11 months ago

I don't understand this. The behavior of the light entity is unrelated to the issue that was filed, which is purely about switches.

@danielbrunt57 Please share corresponding logs of HA and Hyperion that I better understand the component switch problem.

danielbrunt57 commented 11 months ago

So, upon returning home and digging into this further, I discovered my WLED device was inaccessible from both Hyperion (as observed in logs) and also from the WLED integration in HA (connection failed), as well as it was no longer listed as an active wireless device in Unifi. So I rebooted it and now I can control the WLED output on/off from HA Hyperion Integration (Component LED Device) which does now toggle the LED Output in Hyperion and does actually turn the TV led strip on/off on my Athom LS-4P running WLED 0.14.0-b1. I see now that HA's Hyperion LED First Harware Instance switch does not control the First LED Hardware Instance Status switch in Hyperion but rather it instantiates/removes the Source Selection item Home Assistant w/priority 128. image

I currently cannot find a way to alter the priority either in Hyperion or in HA integration as the entity light.first_led_hardware_instance_priority is unavailable.

I am currently unable to control the switch Forwarder from the integration yet I can turn it on/off in Hyperion but there is no change in the state of the HA integration entity switch.first_led_hardware_instance_component_forwarder, but this is really a non-issue for me as I have no idea what a Forwarder is or does.

I have a very simple use case for Hyperion and WLED: turn on WLED output when TV turns on and turn off LED output when TV turns off. When on, the state of the LED strip is controlled by USB video capture which is streamed to WLED.

I can see now that Hyperion is quite complex and can be used to do for far more than my simple use case.

danielbrunt57 commented 11 months ago

This is now working for me...

alias: TV Ambient Lighting
description: ""
trigger:
  - platform: state
    entity_id:
      - media_player.living_room_tv
condition: []
action:
  - if:
      - condition: state
        entity_id: media_player.living_room_tv
        state:
          - "off"
          - unknown
          - unavailable
    then:
      - service: switch.turn_off
        data: {}
        target:
          entity_id: switch.first_led_hardware_instance_component_led_device
    else:
      - service: switch.turn_on
        data: {}
        target:
          entity_id: switch.first_led_hardware_instance_component_led_device
mode: single