alixinne / hyperion.rs

Rust implementation of the Hyperion Ambient Lighting software
MIT License
10 stars 1 forks source link

Flatbuffer / JSON servers report: not enough LED data for device: 41 missing #3

Closed tuxuser closed 2 years ago

tuxuser commented 2 years ago

Hey again.

Maybe you have an idea about this or it's my setup being at fault:

The problem

hyperion.rs logs show that only the first LED (index: 0) contains valuable data.

Error message: not enough LED data for device: 41 missing

Source: https://github.com/vtavernier/hyperion.rs/blob/master/src/instance/device.rs#L97

Jan 24 00:16:00.753 DEBUG hyperion::global::paths: found development root path=/home/tuxuser/Development/hyperion/hyperion.rs
Jan 24 00:16:00.753 DEBUG hyperion::global::paths: found user root path=/home/tuxuser/Development/hyperion/hyperion.rs
Jan 24 00:16:00.762  INFO hyperiond: discovered 39 effects
Jan 24 00:16:00.763 DEBUG hyperion::instance::muxer: cleared all inputs
Jan 24 00:16:00.763 DEBUG hyperion::instance::muxer: current priority changed priority=256
Jan 24 00:16:00.763 DEBUG hyperion::color: computed RGB whitepoint rgb_whitepoint=Rgb { red: 65535, green: 65535, blue: 65535, standard: PhantomData } temperature=6600
Jan 24 00:16:00.763  INFO hyperion::global: registered instance id=0
Jan 24 00:16:00.764  INFO hyperion::servers: Flatbuffers server listening address=0.0.0.0:19400
Jan 24 00:16:00.764  INFO hyperion::servers: JSON server listening address=0.0.0.0:19444
Jan 24 00:16:00.764  INFO hyperion::servers: Protobuf server listening address=0.0.0.0:19445
Jan 24 00:16:00.765  INFO hyperion::web: Webconfig server listening address=0.0.0.0:8090
Jan 24 00:16:02.624 DEBUG handle_client{peer_addr=127.0.0.1:43326}: hyperion::servers::json: accepted new connection
Jan 24 00:16:02.625  INFO handle_client{peer_addr=127.0.0.1:43326}: hyperion::global: registered new input source source=`JSON(127.0.0.1:43326)` (id = 1, priority = None)
Jan 24 00:16:02.625 DEBUG run{self=Instance { id: 0 }}: hyperion::instance::muxer: current priority changed priority=50
Jan 24 00:16:02.626  INFO handle_client{peer_addr=127.0.0.1:43326}: hyperion::global: unregistered input source source=`JSON(127.0.0.1:43326)` (id = 1, priority = None)
Jan 24 00:16:02.626  INFO hyperion::servers: client disconnected peer_addr=127.0.0.1:43326
Jan 24 00:16:02.667  WARN run{self=Instance { id: 0 }}:set_led_data{self=Device { name: "Test instance" }}: hyperion::instance::device: not enough LED data for device: 41 missing

Jan 24 00:16:02.668  INFO run{self=Instance { id: 0 }}:set_led_data{self=Device { name: "Test instance" }}: hyperion::instance::device::dummy: led=  0 red= 52 green=  0 blue=  0
Jan 24 00:16:02.668  INFO run{self=Instance { id: 0 }}:set_led_data{self=Device { name: "Test instance" }}: hyperion::instance::device::dummy: led=  1 red=  0 green=  0 blue=  0
Jan 24 00:16:02.668  INFO run{self=Instance { id: 0 }}:set_led_data{self=Device { name: "Test instance" }}: hyperion::instance::device::dummy: led=  2 red=  0 green=  0 blue=  0
Jan 24 00:16:02.668  INFO run{self=Instance { id: 0 }}:set_led_data{self=Device { name: "Test instance" }}: hyperion::instance::device::dummy: led=  3 red=  0 green=  0 blue=  0
Jan 24 00:16:02.668  INFO run{self=Instance { id: 0 }}:set_led_data{self=Device { name: "Test instance" }}: hyperion::instance::device::dummy: led=  4 red=  0 green=  0 blue=  0
Jan 24 00:16:02.668  INFO run{self=Instance { id: 0 }}:set_led_data{self=Device { name: "Test instance" }}: hyperion::instance::device::dummy: led=  5 red=  0 green=  0 blue=  0
Jan 24 00:16:02.668  INFO run{self=Instance { id: 0 }}:set_led_data{self=Device { name: "Test instance" }}: hyperion::instance::device::dummy: led=  6 red=  0 green=  0 blue=  0
Jan 24 00:16:02.669  INFO run{self=Instance { id: 0 }}:set_led_data{self=Device { name: "Test instance" }}: hyperion::instance::device::dummy: led=  7 red=  0 green=  0 blue=  0
Jan 24 00:16:02.669  INFO run{self=Instance { id: 0 }}:set_led_data{self=Device { name: "Test instance" }}: hyperion::instance::device::dummy: led=  8 red=  0 green=  0 blue=  0
Jan 24 00:16:02.669  INFO run{self=Instance { id: 0 }}:set_led_data{self=Device { name: "Test instance" }}: hyperion::instance::device::dummy: led=  9 red=  0 green=  0 blue=  0
Jan 24 00:16:02.669  INFO run{self=Instance { id: 0 }}:set_led_data{self=Device { name: "Test instance" }}: hyperion::instance::device::dummy: led= 10 red=  0 green=  0 blue=  0
Jan 24 00:16:02.669  INFO run{self=Instance { id: 0 }}:set_led_data{self=Device { name: "Test instance" }}: hyperion::instance::device::dummy: led= 11 red=  0 green=  0 blue=  0
Jan 24 00:16:02.669  INFO run{self=Instance { id: 0 }}:set_led_data{self=Device { name: "Test instance" }}: hyperion::instance::device::dummy: led= 12 red=  0 green=  0 blue=  0
Jan 24 00:16:02.669  INFO run{self=Instance { id: 0 }}:set_led_data{self=Device { name: "Test instance" }}: hyperion::instance::device::dummy: led= 13 red=  0 green=  0 blue=  0
Jan 24 00:16:02.669  INFO run{self=Instance { id: 0 }}:set_led_data{self=Device { name: "Test instance" }}: hyperion::instance::device::dummy: led= 14 red=  0 green=  0 blue=  0
Jan 24 00:16:02.669  INFO run{self=Instance { id: 0 }}:set_led_data{self=Device { name: "Test instance" }}: hyperion::instance::device::dummy: led= 15 red=  0 green=  0 blue=  0
Jan 24 00:16:02.669  INFO run{self=Instance { id: 0 }}:set_led_data{self=Device { name: "Test instance" }}: hyperion::instance::device::dummy: led= 16 red=  0 green=  0 blue=  0
Jan 24 00:16:02.669  INFO run{self=Instance { id: 0 }}:set_led_data{self=Device { name: "Test instance" }}: hyperion::instance::device::dummy: led= 17 red=  0 green=  0 blue=  0
Jan 24 00:16:02.670  INFO run{self=Instance { id: 0 }}:set_led_data{self=Device { name: "Test instance" }}: hyperion::instance::device::dummy: led= 18 red=  0 green=  0 blue=  0
Jan 24 00:16:02.670  INFO run{self=Instance { id: 0 }}:set_led_data{self=Device { name: "Test instance" }}: hyperion::instance::device::dummy: led= 19 red=  0 green=  0 blue=  0
Jan 24 00:16:02.670  INFO run{self=Instance { id: 0 }}:set_led_data{self=Device { name: "Test instance" }}: hyperion::instance::device::dummy: led= 20 red=  0 green=  0 blue=  0
Jan 24 00:16:02.670  INFO run{self=Instance { id: 0 }}:set_led_data{self=Device { name: "Test instance" }}: hyperion::instance::device::dummy: led= 21 red=  0 green=  0 blue=  0
Jan 24 00:16:02.670  INFO run{self=Instance { id: 0 }}:set_led_data{self=Device { name: "Test instance" }}: hyperion::instance::device::dummy: led= 22 red=  0 green=  0 blue=  0
Jan 24 00:16:02.670  INFO run{self=Instance { id: 0 }}:set_led_data{self=Device { name: "Test instance" }}: hyperion::instance::device::dummy: led= 23 red=  0 green=  0 blue=  0
Jan 24 00:16:02.670  INFO run{self=Instance { id: 0 }}:set_led_data{self=Device { name: "Test instance" }}: hyperion::instance::device::dummy: led= 24 red=  0 green=  0 blue=  0
Jan 24 00:16:02.670  INFO run{self=Instance { id: 0 }}:set_led_data{self=Device { name: "Test instance" }}: hyperion::instance::device::dummy: led= 25 red=  0 green=  0 blue=  0
Jan 24 00:16:02.670  INFO run{self=Instance { id: 0 }}:set_led_data{self=Device { name: "Test instance" }}: hyperion::instance::device::dummy: led= 26 red=  0 green=  0 blue=  0
Jan 24 00:16:02.670  INFO run{self=Instance { id: 0 }}:set_led_data{self=Device { name: "Test instance" }}: hyperion::instance::device::dummy: led= 27 red=  0 green=  0 blue=  0
Jan 24 00:16:02.671  INFO run{self=Instance { id: 0 }}:set_led_data{self=Device { name: "Test instance" }}: hyperion::instance::device::dummy: led= 28 red=  0 green=  0 blue=  0
Jan 24 00:16:02.671  INFO run{self=Instance { id: 0 }}:set_led_data{self=Device { name: "Test instance" }}: hyperion::instance::device::dummy: led= 29 red=  0 green=  0 blue=  0
Jan 24 00:16:02.671  INFO run{self=Instance { id: 0 }}:set_led_data{self=Device { name: "Test instance" }}: hyperion::instance::device::dummy: led= 30 red=  0 green=  0 blue=  0
Jan 24 00:16:02.671  INFO run{self=Instance { id: 0 }}:set_led_data{self=Device { name: "Test instance" }}: hyperion::instance::device::dummy: led= 31 red=  0 green=  0 blue=  0
Jan 24 00:16:02.671  INFO run{self=Instance { id: 0 }}:set_led_data{self=Device { name: "Test instance" }}: hyperion::instance::device::dummy: led= 32 red=  0 green=  0 blue=  0
Jan 24 00:16:02.671  INFO run{self=Instance { id: 0 }}:set_led_data{self=Device { name: "Test instance" }}: hyperion::instance::device::dummy: led= 33 red=  0 green=  0 blue=  0
Jan 24 00:16:02.671  INFO run{self=Instance { id: 0 }}:set_led_data{self=Device { name: "Test instance" }}: hyperion::instance::device::dummy: led= 34 red=  0 green=  0 blue=  0
Jan 24 00:16:02.671  INFO run{self=Instance { id: 0 }}:set_led_data{self=Device { name: "Test instance" }}: hyperion::instance::device::dummy: led= 35 red=  0 green=  0 blue=  0
Jan 24 00:16:02.671  INFO run{self=Instance { id: 0 }}:set_led_data{self=Device { name: "Test instance" }}: hyperion::instance::device::dummy: led= 36 red=  0 green=  0 blue=  0
Jan 24 00:16:02.671  INFO run{self=Instance { id: 0 }}:set_led_data{self=Device { name: "Test instance" }}: hyperion::instance::device::dummy: led= 37 red=  0 green=  0 blue=  0
Jan 24 00:16:02.671  INFO run{self=Instance { id: 0 }}:set_led_data{self=Device { name: "Test instance" }}: hyperion::instance::device::dummy: led= 38 red=  0 green=  0 blue=  0
Jan 24 00:16:02.672  INFO run{self=Instance { id: 0 }}:set_led_data{self=Device { name: "Test instance" }}: hyperion::instance::device::dummy: led= 39 red=  0 green=  0 blue=  0
Jan 24 00:16:02.672  INFO run{self=Instance { id: 0 }}:set_led_data{self=Device { name: "Test instance" }}: hyperion::instance::device::dummy: led= 40 red=  0 green=  0 blue=  0
Jan 24 00:16:02.672  INFO run{self=Instance { id: 0 }}:set_led_data{self=Device { name: "Test instance" }}: hyperion::instance::device::dummy: led= 41 red=  0 green=  0 blue=  0

Jan 24 00:16:02.709  INFO run{self=Instance { id: 0 }}:set_led_data{self=Device { name: "Test instance" }}: hyperion::instance::device::dummy: led=  0 red=136 green=  0 blue=  0
Jan 24 00:16:02.709  INFO run{self=Instance { id: 0 }}:set_led_data{self=Device { name: "Test instance" }}: hyperion::instance::device::dummy: led=  1 red=  0 green=  0 blue=  0
Jan 24 00:16:02.709  INFO run{self=Instance { id: 0 }}:set_led_data{self=Device { name: "Test instance" }}: hyperion::instance::device::dummy: led=  2 red=  0 green=  0 blue=  0
Jan 24 00:16:02.709  INFO run{self=Instance { id: 0 }}:set_led_data{self=Device { name: "Test instance" }}: hyperion::instance::device::dummy: led=  3 red=  0 green=  0 blue=  0
Jan 24 00:16:02.709  INFO run{self=Instance { id: 0 }}:set_led_data{self=Device { name: "Test instance" }}: hyperion::instance::device::dummy: led=  4 red=  0 green=  0 blue=  0
Jan 24 00:16:02.709  INFO run{self=Instance { id: 0 }}:set_led_data{self=Device { name: "Test instance" }}: hyperion::instance::device::dummy: led=  5 red=  0 green=  0 blue=  0
Jan 24 00:16:02.710  INFO run{self=Instance { id: 0 }}:set_led_data{self=Device { name: "Test instance" }}: hyperion::instance::device::dummy: led=  6 red=  0 green=  0 blue=  0
Jan 24 00:16:02.710  INFO run{self=Instance { id: 0 }}:set_led_data{self=Device { name: "Test instance" }}: hyperion::instance::device::dummy: led=  7 red=  0 green=  0 blue=  0
Jan 24 00:16:02.710  INFO run{self=Instance { id: 0 }}:set_led_data{self=Device { name: "Test instance" }}: hyperion::instance::device::dummy: led=  8 red=  0 green=  0 blue=  0
Jan 24 00:16:02.710  INFO run{self=Instance { id: 0 }}:set_led_data{self=Device { name: "Test instance" }}: hyperion::instance::device::dummy: led=  9 red=  0 green=  0 blue=  0
Jan 24 00:16:02.710  INFO run{self=Instance { id: 0 }}:set_led_data{self=Device { name: "Test instance" }}: hyperion::instance::device::dummy: led= 10 red=  0 green=  0 blue=  0
Jan 24 00:16:02.710  INFO run{self=Instance { id: 0 }}:set_led_data{self=Device { name: "Test instance" }}: hyperion::instance::device::dummy: led= 11 red=  0 green=  0 blue=  0
Jan 24 00:16:02.710  INFO run{self=Instance { id: 0 }}:set_led_data{self=Device { name: "Test instance" }}: hyperion::instance::device::dummy: led= 12 red=  0 green=  0 blue=  0
Jan 24 00:16:02.710  INFO run{self=Instance { id: 0 }}:set_led_data{self=Device { name: "Test instance" }}: hyperion::instance::device::dummy: led= 13 red=  0 green=  0 blue=  0
Jan 24 00:16:02.711  INFO run{self=Instance { id: 0 }}:set_led_data{self=Device { name: "Test instance" }}: hyperion::instance::device::dummy: led= 14 red=  0 green=  0 blue=  0
Jan 24 00:16:02.711  INFO run{self=Instance { id: 0 }}:set_led_data{self=Device { name: "Test instance" }}: hyperion::instance::device::dummy: led= 15 red=  0 green=  0 blue=  0
Jan 24 00:16:02.711  INFO run{self=Instance { id: 0 }}:set_led_data{self=Device { name: "Test instance" }}: hyperion::instance::device::dummy: led= 16 red=  0 green=  0 blue=  0
Jan 24 00:16:02.711  INFO run{self=Instance { id: 0 }}:set_led_data{self=Device { name: "Test instance" }}: hyperion::instance::device::dummy: led= 17 red=  0 green=  0 blue=  0
Jan 24 00:16:02.711  INFO run{self=Instance { id: 0 }}:set_led_data{self=Device { name: "Test instance" }}: hyperion::instance::device::dummy: led= 18 red=  0 green=  0 blue=  0
Jan 24 00:16:02.711  INFO run{self=Instance { id: 0 }}:set_led_data{self=Device { name: "Test instance" }}: hyperion::instance::device::dummy: led= 19 red=  0 green=  0 blue=  0
Jan 24 00:16:02.711  INFO run{self=Instance { id: 0 }}:set_led_data{self=Device { name: "Test instance" }}: hyperion::instance::device::dummy: led= 20 red=  0 green=  0 blue=  0
Jan 24 00:16:02.711  INFO run{self=Instance { id: 0 }}:set_led_data{self=Device { name: "Test instance" }}: hyperion::instance::device::dummy: led= 21 red=  0 green=  0 blue=  0
Jan 24 00:16:02.711  INFO run{self=Instance { id: 0 }}:set_led_data{self=Device { name: "Test instance" }}: hyperion::instance::device::dummy: led= 22 red=  0 green=  0 blue=  0
Jan 24 00:16:02.711  INFO run{self=Instance { id: 0 }}:set_led_data{self=Device { name: "Test instance" }}: hyperion::instance::device::dummy: led= 23 red=  0 green=  0 blue=  0
Jan 24 00:16:02.712  INFO run{self=Instance { id: 0 }}:set_led_data{self=Device { name: "Test instance" }}: hyperion::instance::device::dummy: led= 24 red=  0 green=  0 blue=  0
Jan 24 00:16:02.712  INFO run{self=Instance { id: 0 }}:set_led_data{self=Device { name: "Test instance" }}: hyperion::instance::device::dummy: led= 25 red=  0 green=  0 blue=  0
Jan 24 00:16:02.712  INFO run{self=Instance { id: 0 }}:set_led_data{self=Device { name: "Test instance" }}: hyperion::instance::device::dummy: led= 26 red=  0 green=  0 blue=  0
Jan 24 00:16:02.712  INFO run{self=Instance { id: 0 }}:set_led_data{self=Device { name: "Test instance" }}: hyperion::instance::device::dummy: led= 27 red=  0 green=  0 blue=  0
Jan 24 00:16:02.712  INFO run{self=Instance { id: 0 }}:set_led_data{self=Device { name: "Test instance" }}: hyperion::instance::device::dummy: led= 28 red=  0 green=  0 blue=  0
Jan 24 00:16:02.712  INFO run{self=Instance { id: 0 }}:set_led_data{self=Device { name: "Test instance" }}: hyperion::instance::device::dummy: led= 29 red=  0 green=  0 blue=  0
Jan 24 00:16:02.712  INFO run{self=Instance { id: 0 }}:set_led_data{self=Device { name: "Test instance" }}: hyperion::instance::device::dummy: led= 30 red=  0 green=  0 blue=  0
Jan 24 00:16:02.712  INFO run{self=Instance { id: 0 }}:set_led_data{self=Device { name: "Test instance" }}: hyperion::instance::device::dummy: led= 31 red=  0 green=  0 blue=  0
Jan 24 00:16:02.712  INFO run{self=Instance { id: 0 }}:set_led_data{self=Device { name: "Test instance" }}: hyperion::instance::device::dummy: led= 32 red=  0 green=  0 blue=  0
Jan 24 00:16:02.712  INFO run{self=Instance { id: 0 }}:set_led_data{self=Device { name: "Test instance" }}: hyperion::instance::device::dummy: led= 33 red=  0 green=  0 blue=  0
Jan 24 00:16:02.712  INFO run{self=Instance { id: 0 }}:set_led_data{self=Device { name: "Test instance" }}: hyperion::instance::device::dummy: led= 34 red=  0 green=  0 blue=  0
Jan 24 00:16:02.713  INFO run{self=Instance { id: 0 }}:set_led_data{self=Device { name: "Test instance" }}: hyperion::instance::device::dummy: led= 35 red=  0 green=  0 blue=  0
Jan 24 00:16:02.713  INFO run{self=Instance { id: 0 }}:set_led_data{self=Device { name: "Test instance" }}: hyperion::instance::device::dummy: led= 36 red=  0 green=  0 blue=  0
Jan 24 00:16:02.713  INFO run{self=Instance { id: 0 }}:set_led_data{self=Device { name: "Test instance" }}: hyperion::instance::device::dummy: led= 37 red=  0 green=  0 blue=  0
Jan 24 00:16:02.713  INFO run{self=Instance { id: 0 }}:set_led_data{self=Device { name: "Test instance" }}: hyperion::instance::device::dummy: led= 38 red=  0 green=  0 blue=  0
Jan 24 00:16:02.713  INFO run{self=Instance { id: 0 }}:set_led_data{self=Device { name: "Test instance" }}: hyperion::instance::device::dummy: led= 39 red=  0 green=  0 blue=  0
Jan 24 00:16:02.713  INFO run{self=Instance { id: 0 }}:set_led_data{self=Device { name: "Test instance" }}: hyperion::instance::device::dummy: led= 40 red=  0 green=  0 blue=  0
Jan 24 00:16:02.713  INFO run{self=Instance { id: 0 }}:set_led_data{self=Device { name: "Test instance" }}: hyperion::instance::device::dummy: led= 41 red=  0 green=  0 blue=  0
Jan 24 00:16:02.749 DEBUG run{self=Instance { id: 0 }}:set_led_data{self=Device { name: "Test instance" }}: hyperion::instance::device::dummy: LED Count 42
Jan 24 00:16:02.749 DEBUG run{self=Instance { id: 0 }}:set_led_data{self=Device { name: "Test instance" }}: hyperion::instance::device::dummy: [Rgb { red: 209, green: 0, b

Test environment

Hyperion.rs versions tested:

Client applications tested:

hyperion.rs config:

[instances.0.instance]
friendlyName = 'Test instance'
enabled = true

[instances.0.device]
type = 'dummy'
hardwareLedCount = 42

Invocation of hyperion.rs: ./target/debug/hyperiond --config config.toml -vv

Invocations of Hyperion.NG clients:

X11 Screengrabber

./bin/hyperion-x11 -a 127.0.0.1
hyperion-x11:
    Version   : 2.0.12 ((HEAD detached at df149583) (GitHub-dc6aa4dd/df149583-1637501177))
    build time: Nov 21 2021 16:48:29
Qt: Session management error: None of the authentication protocols specified are supported
2022-01-24T00:04:46.622  X11GRABBER            : <INFO> XRandR=[available] XRender=[available] XShm=[available] XPixmap=[available]
2022-01-24T00:04:46.622  X11GRABBER            : <INFO> Update of screen resolution: [0x0]  to [5360x1440]
2022-01-24T00:04:46.622  X11GRABBER            : <INFO> Using XRender for grabbing
2022-01-24T00:04:46.622  X11GRABBER            : <INFO> Update output image resolution: [0x0]  to [670x180]
2022-01-24T00:04:46.623  X11GRABBER            : <INFO> Capture interface is now enabled
2022-01-24T00:04:46.623  FLATBUFCONN           : <INFO> Connecting to Hyperion: 127.0.0.1:19400
2022-01-24T00:04:46.664  X11GRABBER            : <INFO> Update of screen resolution: [5360x1440]  to [5360x1440]
2022-01-24T00:04:46.664  X11GRABBER            : <INFO> Using XRender for grabbing
2022-01-24T00:04:46.664  X11GRABBER            : <INFO> Update output image resolution: [670x180]  to [670x180]
2022-01-24T00:04:51.444  FLATBUFCONN           : <INFO> No connection to Hyperion: 127.0.0.1:19400
2022-01-24T00:04:56.399  FLATBUFCONN           : <INFO> Connected to Hyperion: 127.0.0.1:19400

Remote

./bin/hyperion-remote -c FF0000 -a 127.0.0.1
hyperion-remote:
    Version   : 2.0.12 ((HEAD detached at df149583) (GitHub-dc6aa4dd/df149583-1637501177))
    build time: Nov 21 2021 16:48:23

EDIT: Could very well be that the config.toml is vastly incomplete, so only a single LED is represented, sort of as a minimum placeholder... I am currently working on getting a hyperion.db imported..

tuxuser commented 2 years ago

Indeed! User errror ...

Here is the working config: https://github.com/tuxuser/hyperion.rs/commit/204e02e0380ca8df741c6f78936e6ff7f6284275

alixinne commented 2 years ago

The docs aren't really clear on that front, but yes specifying a hardware led count > 0 currently requires fully specifying the LED layout.

The code to generate the parameters for the leds depending on the layout settings is already there (src/models/layouts.rs), but it should definitely be invoked when no leds have been specified in the config.

tuxuser commented 2 years ago

Thanks for the follow-up. The main issue right now is that hyperion.db parsing is broken for me.

Will send a PR once fixed.