openhab1-addons icon indicating copy to clipboard operation
openhab1-addons copied to clipboard

[squeezeserver binding] incomplete CLI command

Open ththeimer opened this issue 7 years ago • 5 comments

Track information is not loaded due to an incorrect CLI command sent by the binding that prevents status messages from being requested and received

Expected Behavior

The binding needs to request status updates using the following CLI command: status - 1 subscribe:10 tags:yagJlN However, that is only executed after a correct player list has been received. The correct way to get a player list this is players 0 2 I have verified via the CLI that this command works (at least with one or two players). It is also described in the CLI command reference. The second parameter seems to control how many players are listed.

Current Behavior

Current implementation is sendCommand("players 0"); It does not produce a valid player list on my system; just returns the number of players. As a result, no valid player is found, and the binding does not subscribe to status requests. No tag values are populated (title, artist, album, etc).

Copy of debug messages: 2017-03-20 18:53:48.971 [INFO ] [io.squeezeserver.SqueezeServer] - Squeeze Server connection started. 2017-03-20 18:53:48.971 [DEBUG] [io.squeezeserver.SqueezeServer] - Squeeze Server listener started. 2017-03-20 18:53:48.980 [DEBUG] [io.squeezeserver.SqueezeServer] - Sending command: players 0 2017-03-20 18:53:48.985 [DEBUG] [io.squeezeserver.SqueezeServer] - Sending command: listen 1 2017-03-20 18:53:49.006 [DEBUG] [io.squeezeserver.SqueezeServer] - Message received: players 0 count%3A1 2017-03-20 18:53:49.016 [DEBUG] [io.squeezeserver.SqueezeServer] - Message received: listen 1 No subscribe ever shows up in log file.

The Openhab2 code is using the exact same code for requesting a list of players, so the fix should be applied there as well.

Possible Solution

Change code to sendCommand("players 0 2"); (this solution may be too simple, as explained below)

Steps to Reproduce (for bugs)

Connect to squeezeserver CLI (port 9090) Enter "players 0" command Check response; does it list players and their properties or just player count.

Context

I can only use basic play and stop commands. Track information and volume is not showing. Most of the variables seem to be derived from the status message so if that is missing then nothing gets displayed.

Your Environment

My squeezeserver is version 7.5.1, other versions may have different behaviour as the binding seems to work in some cases; however there seem to be frequent complaints about missing data. Addons are all version 1.9. Openhab runs on Raspberry.

ththeimer avatar Mar 22 '17 19:03 ththeimer

I'm running LMS version 7.9.0 - 1488878280

When I telnet into port 9090 and issue players 0, I get the full detail for all players. So, I think you're right that the functionality must've changed somewhere after 7.5.1.

mhilbush avatar Mar 23 '17 00:03 mhilbush

Thanks for testing, so it appears there is an LMS version dependency that is not documented. Could you or someone else also try players 0 2 ? I think it should be safe and should work on all versions. It would be better to remove the dependency if the fix doesn't harm. I am now wondering if I should upgrade my LMS, but then we loose a test platform for 7.5.1.

ththeimer avatar Mar 23 '17 06:03 ththeimer

Here's a sample of the responses from various players 0 n commands.

Seems like players 0 gives all known players, while players 0 n gives the first n known players.

players 0
players 0  count%3A6 playerindex%3A0 playerid%3A00%3A04%3A20%3A16%3A45%3A26 uuid%3A1232cd4e32deb7cba5a0f1e1b9b78521 ip%3A192.168.1.134%3A34212 name%3ALiving%20Room seq_no%3A0 model%3Areceiver modelname%3ASqueezebox%20Receiver power%3A1 isplaying%3A0 displaytype%3Anone isplayer%3A1 canpoweroff%3A1 connected%3A1 firmware%3A77 playerindex%3A1 playerid%3A00%3A04%3A20%3A1e%3A44%3Ad7 uuid%3A93b427af814bfa4b55c4973bd51eca8e ip%3A192.168.1.132%3A26081 name%3ABedroom%20Boom seq_no%3A0 model%3Aboom modelname%3ASqueezebox%20Boom power%3A0 isplaying%3A0 displaytype%3Agraphic-160x32 isplayer%3A1 canpoweroff%3A1 connected%3A1 firmware%3A57 playerindex%3A2 playerid%3A00%3A04%3A20%3A16%3A5e%3Ae2 uuid%3A73f2f7d247d6350091ada869badc7ff1 ip%3A192.168.1.131%3A35228 name%3AFamily%20Room%20Squeeze seq_no%3A0 model%3Areceiver modelname%3ASqueezebox%20Receiver power%3A1 isplaying%3A0 displaytype%3Anone isplayer%3A1 canpoweroff%3A1 connected%3A1 firmware%3A77 playerindex%3A3 playerid%3Ab8%3A27%3Aeb%3A16%3A3f%3A1e uuid%3A ip%3A192.168.1.130%3A33368 name%3AOffice seq_no%3A0 model%3Asqueezelite modelname%3ASqueezeLite power%3A1 isplaying%3A0 displaytype%3Anone isplayer%3A1 canpoweroff%3A1 connected%3A1 firmware%3Av1.8.6-938 playerindex%3A4 playerid%3Ab8%3A27%3Aeb%3Ac7%3Ad4%3Acc uuid%3A ip%3A192.168.1.144%3A49440 name%3ASource1 seq_no%3A0 model%3Asqueezelite modelname%3ASqueezeLite power%3A1 isplaying%3A0 displaytype%3Anone isplayer%3A1 canpoweroff%3A1 connected%3A1 firmware%3Av1.8.6-830 playerindex%3A5 playerid%3Ab8%3A27%3Aeb%3A5b%3A05%3Adc uuid%3A ip%3A192.168.1.146%3A56454 name%3ASource2 seq_no%3A0 model%3Asqueezelite modelname%3ASqueezeLite power%3A1 isplaying%3A0 displaytype%3Anone isplayer%3A1 canpoweroff%3A1 connected%3A1 firmware%3Av1.8.6-830
players 0 2
players 0 2 count%3A6 playerindex%3A0 playerid%3A00%3A04%3A20%3A16%3A45%3A26 uuid%3A1232cd4e32deb7cba5a0f1e1b9b78521 ip%3A192.168.1.134%3A34212 name%3ALiving%20Room seq_no%3A0 model%3Areceiver modelname%3ASqueezebox%20Receiver power%3A1 isplaying%3A0 displaytype%3Anone isplayer%3A1 canpoweroff%3A1 connected%3A1 firmware%3A77 playerindex%3A1 playerid%3A00%3A04%3A20%3A1e%3A44%3Ad7 uuid%3A93b427af814bfa4b55c4973bd51eca8e ip%3A192.168.1.132%3A26081 name%3ABedroom%20Boom seq_no%3A0 model%3Aboom modelname%3ASqueezebox%20Boom power%3A0 isplaying%3A0 displaytype%3Agraphic-160x32 isplayer%3A1 canpoweroff%3A1 connected%3A1 firmware%3A57
players 0 3
players 0 3 count%3A6 playerindex%3A0 playerid%3A00%3A04%3A20%3A16%3A45%3A26 uuid%3A1232cd4e32deb7cba5a0f1e1b9b78521 ip%3A192.168.1.134%3A34212 name%3ALiving%20Room seq_no%3A0 model%3Areceiver modelname%3ASqueezebox%20Receiver power%3A1 isplaying%3A0 displaytype%3Anone isplayer%3A1 canpoweroff%3A1 connected%3A1 firmware%3A77 playerindex%3A1 playerid%3A00%3A04%3A20%3A1e%3A44%3Ad7 uuid%3A93b427af814bfa4b55c4973bd51eca8e ip%3A192.168.1.132%3A26081 name%3ABedroom%20Boom seq_no%3A0 model%3Aboom modelname%3ASqueezebox%20Boom power%3A0 isplaying%3A0 displaytype%3Agraphic-160x32 isplayer%3A1 canpoweroff%3A1 connected%3A1 firmware%3A57 playerindex%3A2 playerid%3A00%3A04%3A20%3A16%3A5e%3Ae2 uuid%3A73f2f7d247d6350091ada869badc7ff1 ip%3A192.168.1.131%3A35228 name%3AFamily%20Room%20Squeeze seq_no%3A0 model%3Areceiver modelname%3ASqueezebox%20Receiver power%3A1 isplaying%3A0 displaytype%3Anone isplayer%3A1 canpoweroff%3A1 connected%3A1 firmware%3A77
players 0 1
players 0 1 count%3A6 playerindex%3A0 playerid%3A00%3A04%3A20%3A16%3A45%3A26 uuid%3A1232cd4e32deb7cba5a0f1e1b9b78521 ip%3A192.168.1.134%3A34212 name%3ALiving%20Room seq_no%3A0 model%3Areceiver modelname%3ASqueezebox%20Receiver power%3A1 isplaying%3A0 displaytype%3Anone isplayer%3A1 canpoweroff%3A1 connected%3A1 firmware%3A77
players 0 10
players 0 10 count%3A6 playerindex%3A0 playerid%3A00%3A04%3A20%3A16%3A45%3A26 uuid%3A1232cd4e32deb7cba5a0f1e1b9b78521 ip%3A192.168.1.134%3A34212 name%3ALiving%20Room seq_no%3A0 model%3Areceiver modelname%3ASqueezebox%20Receiver power%3A1 isplaying%3A0 displaytype%3Anone isplayer%3A1 canpoweroff%3A1 connected%3A1 firmware%3A77 playerindex%3A1 playerid%3A00%3A04%3A20%3A1e%3A44%3Ad7 uuid%3A93b427af814bfa4b55c4973bd51eca8e ip%3A192.168.1.132%3A26081 name%3ABedroom%20Boom seq_no%3A0 model%3Aboom modelname%3ASqueezebox%20Boom power%3A0 isplaying%3A0 displaytype%3Agraphic-160x32 isplayer%3A1 canpoweroff%3A1 connected%3A1 firmware%3A57 playerindex%3A2 playerid%3A00%3A04%3A20%3A16%3A5e%3Ae2 uuid%3A73f2f7d247d6350091ada869badc7ff1 ip%3A192.168.1.131%3A35228 name%3AFamily%20Room%20Squeeze seq_no%3A0 model%3Areceiver modelname%3ASqueezebox%20Receiver power%3A1 isplaying%3A0 displaytype%3Anone isplayer%3A1 canpoweroff%3A1 connected%3A1 firmware%3A77 playerindex%3A3 playerid%3Ab8%3A27%3Aeb%3A16%3A3f%3A1e uuid%3A ip%3A192.168.1.130%3A33368 name%3AOffice seq_no%3A0 model%3Asqueezelite modelname%3ASqueezeLite power%3A1 isplaying%3A0 displaytype%3Anone isplayer%3A1 canpoweroff%3A1 connected%3A1 firmware%3Av1.8.6-938 playerindex%3A4 playerid%3Ab8%3A27%3Aeb%3Ac7%3Ad4%3Acc uuid%3A ip%3A192.168.1.144%3A49440 name%3ASource1 seq_no%3A0 model%3Asqueezelite modelname%3ASqueezeLite power%3A1 isplaying%3A0 displaytype%3Anone isplayer%3A1 canpoweroff%3A1 connected%3A1 firmware%3Av1.8.6-830 playerindex%3A5 playerid%3Ab8%3A27%3Aeb%3A5b%3A05%3Adc uuid%3A ip%3A192.168.1.146%3A56454 name%3ASource2 seq_no%3A0 model%3Asqueezelite modelname%3ASqueezeLite power%3A1 isplaying%3A0 displaytype%3Anone isplayer%3A1 canpoweroff%3A1 connected%3A1 firmware%3Av1.8.6-830

mhilbush avatar Mar 23 '17 10:03 mhilbush

OK, so the situation is a bit more complicated than I thought. The second parameter controls the number of players listed, the difference in behavior is when no second parameter is supplied. I have run the same test with two players:

players 0
players 0  count:2
players 0 0
players 0 0 count:2
players 0 1
players 0 1 count:2 playerindex:0 playerid:bc:5f:f4:c8:79:17 uuid:3b9b7b84dd9922a73c0e748a59692b50 ip:192.168.178.20:49770 name:SqueezePlay model:squeezeplay isplayer:1 displaytype:none canpoweroff:1 connected:1
players 0 2
players 0 2 count:2 playerindex:0 playerid:bc:5f:f4:c8:79:17 uuid:3b9b7b84dd9922a73c0e748a59692b50 ip:192.168.178.20:49770 name:SqueezePlay model:squeezeplay isplayer:1 displaytype:none canpoweroff:1 connected:1 playerindex:1 playerid:00:04:20:22:50:6f uuid:480ea0df8550ec1d11236d771c34db49 ip:192.168.178.23:44033 name:Squeezebox%20Touch model:fab4 isplayer:1 displaytype:none canpoweroff:1 connected:1

It would require to detect that the response includes only the count, and if the count is > 0 issue a second request with the correct player count. That would catch it. The current code is directly searching for the first playerindex, no matter what the response looks like.

Obviously, the behavior when no count is specified has changed somewhere between LMS version 7.5 and 7.9.

ththeimer avatar Mar 23 '17 19:03 ththeimer

I'm running LMS 7.9 and I notice the results are not consistent. After a reboot, players 0 just list the player id's, but no properties. players 0 n will then list the count as well as player properties. Subsequent players 0 will then list the count, id's and properties

airix1 avatar Nov 25 '17 22:11 airix1