-
Hello, I recently purchased a Louder Esparagus (highly recommend!) that is running squeezelite-esp32. It supports an included display. Everything is up and running great. I noticed that when it boots up it shows the IP and port of the server and when I stream over airplay or spotify it will show the current metadata. Here is the kicker, I don't actually run LMS. I am using the Music Assistant server which implements a minimalist slimproto server that simply allows playback. So I can't run the SqueezeliteESP plugin in order to manage the display. Now the reason this is in Q&A and not ideas is because I am not looking for you to do anything to support this unsupported use case! I totally understand that you're busy and this isn't (nor should be) a priority to you. I am only humbly asking if you happen to have any insight or tips on how it would be possible to manage the display without using the plugin provided. I have taken a quick look at the source code for the plugin but unfortunately my Perl is quite rusty, haven't used it since university 🤣 so it will take me a while to parse through it all and figure out how much is done on the ESP32 vs how much is done by LMS. Effectively, I'd like to change the default screen from just showing the IP of the LMS server to something more useful (anything really, even just a clock) All I am looking for in this thread is something along the lines of: "You can just set this NVS variable and that will change the default display", or "LMS actually sends the full display data, we read it from a <JSON RPC/HTTP REST> endpoint in LMS" or anything of the sort. Just looking for advice on where I should direct my search to figure out how to handle this from someone who probably already has way more info inside their head on deck. Thanks for your time! |
Beta Was this translation helpful? Give feedback.
Replies: 1 comment
-
... well that was a silly adventure! I got a clock and it was way easier than I expected, but I will document the journey in case Google brings someone else here and wants to know. First, I assumed since the metadata showed during Airplay and Spotify that the display was handled in the firmware, and when I saw the list of modes in the GraphicsSettings.pm file I thought I just had to figure out how to set the mode. This was incorrect. It turns out that it was my second fear, the LMS server sends the entire display data. There are manual overrides for the display in the firmware only for the other protocols. For squeezelite, the mode data from the plugin just eventually filters all the way up to the Player.pm which uses it to build out the screen and sends the data to the player via the grfe command that is essentially just bit data. Now that I was aware of the grfe command I started looking into how Music Assistant implements it's "lite version" of the Slimproto. That lead me to finding out that it uses the aioslimproto library and when digging through that code I realized that there was code for displaying a clock in the client.py file. So I started digging into how to get Music Assistant to trigger that. Looking into the MA source code I found ... that there is a config entry to enable the display for a given player 🤦 Yep, turns out that display support including showing a clock is built into Music Assistant and I just assumed it wasn't since I read somewhere that they only implement enough of Slimproto to play audio and don't intend to support anything else (probably an old Github issue somewhere) So I toggled a single checkbox and everything works great!! I don't even have a good excuse, this config is clearly documented in their documentation and I just somehow missed it! Well at least now I am a happy camper and I learned a ton of how Slimproto, LMS Plugins and Squeezelite information, even if the solution in the end was a completely silly result. |
Beta Was this translation helpful? Give feedback.
... well that was a silly adventure! I got a clock and it was way easier than I expected, but I will document the journey in case Google brings someone else here and wants to know.
First, I assumed since the metadata showed during Airplay and Spotify that the display was handled in the firmware, and when I saw the list of modes in the GraphicsSettings.pm file I thought I just had to figure out how to set the mode. This was incorrect.
It turns out that it was my second fear, the LMS server sends the entire display data. There are manual overrides for the display in the firmware only for the other protocols. For squeezelite, the mode data from the plugin just eventually filters all the way …